1. ホーム
  2. jquery

[解決済み] あるクラスのdivがDOMに追加されたことを検出するjquery

2023-01-27 10:15:45

質問

私は .on() を使用して、ページがロードされた後に作成される div のイベントをバインドしています。これは、クリック、マウスエンター...のためにうまく動作しますが、私はクラスMyClassの新しいdivが追加されたときに知っておく必要があります。私はこれを探しています。

$('#MyContainer').on({

  wascreated: function () { DoSomething($(this)); }

}, '.MyClass');

どうすればいいのでしょうか?私は自分のアプリ全体をプラグインなしで書くことができたので、その状態を維持したいのです。

ありがとうございます。

どのように解決するのですか?

3年間の経験から、私はこのように聞いています。 "element of a certain class added to the DOM" : あなたは単に、jQuery の html() 関数にフックを追加するだけです。

function Start() {

   var OldHtml = window.jQuery.fn.html;

   window.jQuery.fn.html = function () {

     var EnhancedHtml = OldHtml.apply(this, arguments);

     if (arguments.length && EnhancedHtml.find('.MyClass').length) {

         var TheElementAdded = EnhancedHtml.find('.MyClass'); //there it is
     }

     return EnhancedHtml;
   }
}

$(Start);

これは、私が使っている jQuery を使っている場合に有効です。また、ブラウザ固有のイベントである DOMNodeInserted に依存しないので、クロスブラウザ互換性がありません。また、同じ実装を .prepend()

全体として、これは私にとって魅力的なように動作しますし、あなたにとってもそうであることを願っています。