如何使jQuery选择器运行得更快或以块的形式运行它

时间:2009-09-06 07:30:44

标签: jquery

我有一个简单的jQuery代码,它运行在一个拥有超过50,000个人名单的网页上。在IE上,我得到的消息是脚本耗时太长。我想摆脱IE中令人讨厌的弹出窗口。

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

我的jquery代码是

$('#all_member').click(function(){
    $("#people_form input:checkbox").attr('checked', true);
    return false;
});

3 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:4)

     
  1. 与所有人说的一样,你可能在同一页面上不需要50,000个复选框
  2.  
  3. 如果要使用块,请在选择器中指定块:
  4. $('#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 :(得分:1)

如果您坚持使用50,000个元素,那么我认为这不是一个公共网站。

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