JavaScript/jQuery セレクターの関数は、関数が読み込まれる前にページにあった要素に適用されます。例えば、
$('.foo').css('color', 'red');
コードのこの部分が読み取られた時点でクラスを持つ要素に適用されますが、などfoo
の JavaScript/jQuery 関数を介して後で挿入された要素には適用されません。append()
要素が挿入されていますか?
JavaScript/jQuery セレクターの関数は、関数が読み込まれる前にページにあった要素に適用されます。例えば、
$('.foo').css('color', 'red');
コードのこの部分が読み取られた時点でクラスを持つ要素に適用されますが、などfoo
の JavaScript/jQuery 関数を介して後で挿入された要素には適用されません。append()
要素が挿入されていますか?
あなたの質問を完全に理解しているかどうかはわかりませんが、答えてみてください。
JQuery セレクターでメソッドを呼び出すと、セレクター基準に一致する DOM 内のすべてのオブジェクトに適用されます。
明確にするために、これには動的に追加された要素が含まれます。たとえば、以下のメソッド「hide」を取り上げて、動的に挿入された要素に適用します。
$('body').append('<h1 id="test" style="display:none;">HI!</h1>');
$('#test').show();
したがって、動的に挿入された要素に JQuery が適用されないわけではありませんが、まだ存在しない要素には適用されないだけです。つまり、呼び出し後に追加された要素には適用されません。
ただし、JQuery には「live()」と呼ばれる巧妙な小さなメソッドがあり、ニーズに適用できる可能性があります。
説明: 現在および将来において、現在のセレクターに一致するすべての要素のイベント ハンドラーをアタッチします。
live() の代わりはon()です。ただし、on() は live() のようには機能せず、将来の要素で機能させるには、将来の要素の PARENT 要素に「on」イベント ハンドラを配置する必要があります。
詳細については、この回答を参照してください: Turning live() into on() in jQuery