7

.this_button動的にロードされている要素()で関数を実行しようとしています。次のコードを使用しています。

$(function(){
    $("body").on("load", ".this_button", function() {
         console.log("its been loaded");
    });
});

試しdelegateましたが、が廃止されたとのことですon。ドキュメントがすでに10分間ロードされた後など、一部の要素がプッシュされる場合があります。.this_button要素が本体に入ったかどうかを継続的にチェックするにはどうすればよいですか?

なぜこれが機能しないのか誰もが知っていますか?

4

2 に答える 2

11

ドキュメントから:

「すべてのブラウザで、読み込み、スクロール、エラーのイベント(要素など)がバブルすることはありません。[...]このようなイベントは委任での使用はサポートされていませんが、イベントハンドラーが直接使用されている場合は使用できます。イベントを生成する要素にアタッチされています。」

于 2012-08-09T14:31:18.703 に答える
11

このonメソッドは、最初に実行されたときに現在選択されている要素のイベント、または特定のセレクターに一致する特定のイベントを発生させる将来の要素を処理します。ページに追加されている要素が自動的にloadまたは他のタイプのイベントを発生させることはないため、新しく追加された要素に対してコードが実行されることはありません。

2つのオプションがあります。1つ目は、新しい要素が挿入されるたびにカスタムイベントをトリガーすることです。例えば、

$.get("/newElemnet", function(newElement) {
   $('#placeToInsertElement').append(newElement);
   $(newElement).trigger('newElementAdded');
});

次に、元の関数はそのカスタムイベントをリッスンします。

$(function(){
    $("body").on("newElementAdded", ".this_button", function() {
         console.log("its been loaded");
    });
}); 

2番目のオプションは、この質問で説明されているように、常に新しい要素をポーリングすることです。

于 2012-08-09T15:09:04.370 に答える