javascript - 如何在 10 次迭代后设置 setTimeout?

标签 javascript jquery

我有一个如下所示的每个循环

$('#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/

相关文章:

javascript - '.then' 函数在 AngularJS 的 Protractor E2E 测试中到底是如何工作的?

javascript - Monkey Patch jquery 函数内容

jquery - 提交表单而不刷新/重定向当前页面(Python(Django)+ jQuery + Ajax)

javascript - 根据窗口大小调整页面元素的大小

javascript - jQuery,很多 child 。有什么更好的方法来做到这一点?

javascript - jQuery:总是在 dom 树中的图像下方找到下一个 .gallery?

javascript - 通过值查找 javascript 中对象的索引

javascript - 需要使用 javascript 将所选文本设为粗体/斜体/下划线,或者需要非常基本的文本编辑器建议

javascript - 获取输入文本字段的最后一个值

javascript - 在 console.log 中打印 Javascript 对象时的不同行为