代码之家  ›  专栏  ›  技术社区  ›  Neeraj Singh

如何使jquery选择器运行得更快或分块运行

  •  1
  • Neeraj Singh  · 技术社区  · 15 年前

    我有一个简单的jquery代码,它运行在一个拥有50000多人列表的网页上。在IE上,我得到一个信息,一个脚本需要太长的时间。我想把IE里那烦人的弹出窗口去掉。

    如果我需要添加50000个DOM元素,那么我可以使用计时器将工作分块推迟。在这种情况下,当我从大数据块中进行选择时,我不确定计时器是否有任何帮助。

    我的jquery代码是

    $('#all_member').click(function(){
        $("#people_form input:checkbox").attr('checked', true);
        return false;
    });
    
    3 回复  |  直到 10 年前
        1
  •  4
  •   orip    15 年前
    1. 就像大家说的,你可能不需要同一页上的50000个复选框
    2. 如果要使用块,请在选择器中指定块:
    $('#people_form input:checkbox:gt(chunk_start):lt(chunk_size)')
    

    一个更完整的例子(您仍然需要使用 setTimeout 要避免弹出:

    var CHUNK_SIZE = 4000;
    var TOTAL = 50000;
    for (var i = 0; i < TOTAL; i += CHUNK_SIZE) {
      var chunk_suffix = ':gt(' + i + '):lt(' + CHUNK_SIZE + ')';
      $('#people_form input:checkbox' + chunk_suffix).attr('checked', true');
    }
    
        2
  •  8
  •   Andreas Grech    15 年前

    我认为你真正需要做的是找到一种方法来减少50000个数字。

        3
  •  1
  •   Vnuk    15 年前

    如果你坚持你的50000个元素,那么我假设这不是一个公共网络。

    在这种情况下,您可以要求所有用户 Google Gears 安装。使用Gears,您可以将JavaScript执行委托给浏览器后面的组件,这意味着(可能)您不会收到IE消息。