2009-09-06 96 views
1

我有一個簡單的jQuery代碼,運行在擁有超過50,000人的列表的網頁上。在IE瀏覽器中,我收到腳本耗時過長的消息。我想在IE中擺脫那個令人討厭的彈出窗口。如何使jQuery選擇器運行得更快或以塊的形式運行

如果我需要添加50,000個DOM元素,那麼我可以使用計時器來推遲塊的工作。我不確定當我從大塊數據中選擇計時器時,這種情況是否會有幫助。

我jQuery代碼是

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

您認爲50,000個複選框成爲一個很好的用戶體驗? – cletus 2009-09-06 07:39:42

+1

50,000個複選框在單個頁面上?我建議你重新考慮你在網頁上顯示信息的方法。 – SolutionYogi 2009-09-06 07:39:46

+0

什麼類型的用戶界面可以在DOM中同時存在50,000個元素的情況下進行構建? – 2009-09-06 07:39:59

回答

4
  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'); 
} 
8

我覺得你真的需要做的是找到如何減少讓50 000號的方式。

1

如果你堅持你的50,000個元素,那麼我認爲這不是一個公共網絡。

在這種情況下,您可以要求所有用戶安裝Google Gears。通過Gears,您可以將JavaScript執行委託給瀏覽器後面的組件,這意味着(可能)您不會獲得該IE消息。