18

ul コンテンツが変更されたときに jQuery 関数を呼び出そうとします。

以下は私のコードです

JS

jQuery(document).ready(function($) {

        $('.ProductList').live('change', function() {
          alert('content is changed now');
        });
    });

HTML

<ul class='ProductList List Clear'>
call jquery function when content change here.
     <li></li>
     <li></li>
      <li></li>
</ul>

私がそれを解決できるように、私にいくつかのアイデアを提案してください。

私はbigcoomerceのカスタマイズに取り組んでおり、アクセスが制限されているために大きな商取引ではajax関数にアクセスできないため、コンテンツの変更に基づいて関数を呼び出そうとしています。そのため、そのような関数を呼び出す必要があります。

4

7 に答える 7

10

これは少し遅い応答ですが、同じ問題に直面している新しい開発者のために共有します。

MutationEventsの使用を提案する人もいるかもしれませんが、これは非推奨であるため注意してください。

$('.ProductList').on('DOMSubtreeModified', function(event) {
    // dos tuff
});

推奨される方法は、この質問で説明されているようにMutationObserverを使用することですが、IE8 などの古いブラウザーではサポートされていないことに注意してください。

于 2015-02-10T21:05:11.717 に答える
7

次のことをテストします: {特定の ajax リクエストがグローバル false に設定されている場合、これは機能しません}

! function () {
    var ulContent;
    $(document).ajaxStop(function () {
        var $ul = $('.ProductList');
        if(ulContent !== $ul.html()){
            ulContent = $ul.html();
            $ul.trigger('contentChanged');
        }
    });
}();

$('.ProductList').on('contentChanged',callback);

callback は、UL の内容が変更されたときに呼び出す関数です。ajaxStop ハンドラーから直接呼び出す必要がありますが、通常はカスタム イベントを使用します。

または、以前の構文の意味がわからない場合は、次のように使用します。

 $('.ProductList').on('contentChanged',function(){alert('UL content changed!!!');});
于 2013-07-24T10:36:59.293 に答える
3
$(document).on('DOMSubtreeModified', function (e) {
     if ($(e.target).hasClass("select2-choices")) {
          console.log("cambio");
          alert("cambio");
     }
});
于 2016-10-18T21:15:49.150 に答える
2

ul 要素には form 要素のような onchange イベントはありません。

li 要素の内容は、コード内の何らかの関数によって変更されていると確信しています。したがって、より良い方法は、その関数でイベントを発行し、そのイベントをリッスンすることです。

これが役立つかもしれません:jqueryのカスタムイベント

于 2013-07-24T10:28:26.990 に答える
-8
$('.ProductList li').live('click',function()
{
    alert('You just clicked a paragraph!');
});
于 2013-07-24T10:13:20.833 に答える