簡體   English   中英

如何使jQuery選擇器運行更快或成塊運行

[英]How to make jQuery selector run faster or run it in chunks

我有一個簡單的jQuery代碼,該代碼在具有50,000多個人員列表的網頁上運行。 在IE上,我收到一條消息,指出腳本花費的時間太長。 我想擺脫IE中令人討厭的彈出窗口。

如果我需要添加50,000個DOM元素,則可以使用計時器將工作推遲進行。 當我從大量數據中選擇時,我不確定計時器在這種情況下是否會有所幫助。

我的jQuery代碼是

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

我認為您真正需要做的是找到減少50,000個數字的方法。

  1. 就像大家說的一樣,您可能不需要在同一頁面上放置50,000個復選框
  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');
}

如果您堅持使用50,000個元素,那么我認為這不是公共網站。

在這種情況下,您可以要求所有用戶都安裝Google Gears 使用Gears,您可以將JavaScript執行委托給瀏覽器“背后”的組件,這意味着(可能)您不會收到該IE消息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM