div.ok
2番目の方法では、DOMを再度検索する必要がないため、パフォーマンスが大幅に向上する可能性が高くなります(DOMに大量の要素がドロップされていない場合)。別のオプションは、html/props
代わりに署名を使用することです。
$("<div>", {
'class': "ok",
'click': function () {
alert("You clicked the new element!");
}
}).appendTo("body");
デモ: http: //jsfiddle.net/w4Tj3/
.live()
これは非推奨であることに注意してください。イベント委任を使用する場合は、これ以降を使用することをお勧めします.on()
。ただし、あなたの場合、必ずしもどちらも必要ではありません。代わりに、模倣するには、 :.live()
にリスナーを設定します。document
$(document).on("click", ".ok", function () {
alert("You clicked an .ok element!");
});
これが機能する方法は、イベントのバブリング動作を活用することです。要素をクリックすると、クリックによってDOMが上に移動し、最終的にdocument
オブジェクトに到達します。次に、jQueryは、クリックを開始した要素がセレクター()と一致するかどうかを確認し、一致する.ok
場合は無名関数を実行します。
パフォーマンスを向上させるには、にバインドするdocument
のではなく、動的に追加された要素にはるかに近いものにバインドします。たとえば、li
要素を動的に追加する場合は、その親ol
またはにバインドしul
ます。このように、イベントは処理される前に伝播する必要はありません。
click
イベントの委任を設定すると、動的に追加されたロジックからロジックを削除できdiv
ます。
$("<div>", {'class': 'ok'}).appendTo("body");