2

これは私のサンプルコードです:

var contents = $('#contents');
contents.bind('DOMSubtreeModified', function () {
  ...
});

...

/* other people's code */
var contents = $('#contents');
contents.append(...);
contents.append(...);
...
...

イベント 'DOMSubtreeModified' にバインドします。コールバック関数が 10 回以上呼び出されることに気付きました。これは、多くの要素が個別の呼び出しが連続して挿入/変更されているためです。私は他の人のコードを変更することはできず、追加の新しい要素をどのように実装するかを制御することもできません。すべての要素が追加/変更された、コールバック関数を 1 回だけ呼び出す方法はありますか?

4

1 に答える 1

3

を使用してそれを行うことができますsetTimeout()。これが実用的なフィドルです

var timer;
$("#content").on("DOMSubtreeModified", function()
{
    if (timer) clearTimeout(timer);
    timer = setTimeout(function() { alert("finished"); }, 100);
});

$("button").on("click", function()
{
    $("#content").append("<span>FUS</span>");
    $("#content").append("<span> RO</span>");
    $("#content").append("<span> DAH</span>");
});​
于 2012-12-07T21:44:54.670 に答える