0

jQuery .live() のバージョン 1.7 は .on() を支持して廃止されたため、簡単な質問です。ただし、.on() は、JavaScript を介してレンダリングされ、DOM にロードされる要素では機能しないようです。私の質問は、 .live() を引き続き使用する必要があるか、または .on() がこれらの新しく生成された要素をどのようにキャプチャするかです。

例として、これが私のコードです:

$("#listitem").append("<li id='removeitem'>" + 
       formdata + ' <a href="#">Remove</a></li>');

そして、.on() を介してこの要素を操作しようとすると、結果は何もありませんが、.live() はこの要素を取得できます。

$("#removeitem").live("click", function(event) { alert($(this).text()); });
4

2 に答える 2

7

liveバージョン:

$("#removeitem").live("click", function(event) { alert($(this).text()); });

次のように変更する必要があります。

$("#containerId").on("click", "#removeitem", function(event) { 
    alert($(this).text()); 
});

が読み込まれる静的要素はどこcontainerIdにありますか。removeitem

body単純に静的要素として使用できます。

$("body").on('click', '#removeitem'm fn);

ただし、コードの効率は低下します。コードを試して、どのように機能するかを示してください。


ノート:

  1. id無効なマークアップであるため、同じ要素が複数ないことを願っています。
  2. listitemコード内の静的要素のようです。

アップデート:

たぶんそれが私の問題です - .live を .on に置き換えただけです

それらを単純に置き換えることはできません...それらは別の方法で機能し、異なるパラメータを持っています!

各関数のドキュメントを読んでください:

on:

.on(events [, selector] [, data], handler(eventObject)) 

live:

.live( events, handler(eventObject) )
于 2012-06-02T20:00:07.893 に答える
1

次のように試してみてください.on()

$('#listitem').on('click', '#removeitem', function() {
    alert($(this).text());
});

デモ

のような固定 ID がなくremoveitem、その構造がなどremoveitem1の場合は、removeitem1次を試してください。

$('#listitem').on('click', '[id^=removeitem]', function() {
    alert($(this).text());
});
于 2012-06-02T20:00:31.607 に答える