div.ok2番目の方法では、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");