現在、サーバーからデータを受信し、折りたたみ可能な要素を動的に作成するアプリケーションを作成しています。これで、アプリケーション全体で折りたたみ可能な要素の開閉のアニメーションを可能にするコードができました。
$('[data-role="collapsible"]').bind('expand', function () {
$(this).children().slideDown(500);
}).bind('collapse', function () {
$(this).children().next().slideUp(500);
});
現在、このコードは、動的に作成された折りたたみ可能な要素では機能しません。したがって、私がやろうとしたことは次のとおりです。
$(document).on('pagechange','#resultssearch',
function()
{
$('[data-role="collapsible"]').bind('expand', function () {
$(this).children().slideDown(500);
}).bind('collapse', function () {
$(this).children().next().slideUp(500);
});
});
そのため、動的な折りたたみ可能な要素が追加されたページで、上記のページ イベントを追加しようとしました。しかし、これもうまくいかないようです。動的に生成してアニメーション化するにはどうすればよいですか?
提案された回答に示されているように、機能するコードは次のようになります。
$(document).on('expand', '[data-role="collapsible"]', function () {
$(this).children().slideDown(500);
}).on('collapse', '[data-role="collapsible"]', function () {
$(this).children().next().slideUp(500);
});
これは 100% 機能しません。子折りたたみ可能オブジェクトのイベントは、最終的に親折りたたみ可能オブジェクトに影響を与えます。これについては、こちらで確認できます。子供の折りたたみ式がこれを行うのを止める方法はありますか?