我有一个如下所示的每个循环
$('#goldBarList tr:not(:eq(0))').filter(':has(:checkbox:checked)').each(function() {
$(this).remove();
});
因为我有 4000 行,每行都有一个复选框。我需要删除那些选中复选框的行。
但是,浏览器给出停止运行此脚本错误?
因为这个循环需要更多时间才能完成。
所以我只想在 10 次迭代后使用 setTimeout
并在 0.5 秒后继续循环..
意味着我希望循环在每 10 次迭代后休眠 1/2 秒。
请给我一些代码引用...
谢谢...
最佳答案
看来您真正想要的是能够在浏览器不超时的情况下删除这些元素。即使超时为 0,使用 window.setTimeout 拆分调用也能达到目的。下面的代码以 500 个为批处理执行此操作。
编辑:更新以提高性能。 (谢谢伯吉。)
var removeTds = function($el) {
var elements = $el.filter(":lt(500)"),
count = elements.length;
elements.remove();
$el = $el.filter(":gt(499)");
if (count === 500) {
window.setTimeout(function() {
removeTds($el);
}, 0);
}
};
removeTds($('tbody tr:not(:eq(0))').filter(':has(:checkbox:checked)'));
这是fiddle .
关于javascript - 如何在 10 次迭代后设置 setTimeout?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13933982/