这是我的示例代码:
var contents = $('#contents');
contents.bind('DOMSubtreeModified', function () {
...
});
...
/* other people's code */
var contents = $('#contents');
contents.append(...);
contents.append(...);
...
...
我绑定到事件'DOMSubtreeModified',我注意到我的回调函数将被调用超过10次,因为许多元素被插入/修改为单独的连续调用。我无法修改其他人的代码,我无法控制他们如何实现追加新元素。有没有办法让我的回调函数只在之后被调用所有附加/更改的元素?
答案 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>");
});