jQuery:只在所有事件更改后运行一次回调函数

时间:2012-12-07 21:35:52

标签: javascript jquery events

这是我的示例代码:

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

...

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

我绑定到事件'DOMSubtreeModified',我注意到我的回调函数将被调用超过10次,因为许多元素被插入/修改为单独的连续调用。我无法修改其他人的代码,我无法控制他们如何实现追加新元素。有没有办法让我的回调函数只在之后被调用所有附加/更改的元素?

1 个答案:

答案 0 :(得分:3)

您可以使用setTimeout()执行此操作。这是一个有效的fiddle

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>");
});​