我有一個UI場景,它包含一個列表(<ul>
),其中包含大量列表項(<li>
)。該場景包括使用jQuery搜索,過濾(在類和屬性上),刪除和創建這些項目。處理這種情況的最佳實踐和優化有哪些?用戶界面可以通過大量元素獲得多大的緩慢/沉重?處理HTML/Javascript中的數千個列表元素
0
A
回答
0
這是夠重的時候上百個,而不是幾千人:d
也許你應該使用分頁帶或不帶AJAX。
0
要有所回答你的第二個問題:
var ul = jQuery('<ul/>');
for(var i = 0; i < 100000; i++)
{
var li =jQuery('<li class="hilight"/>');
if(i % 2 == 0)li.addClass('special');
ul.append(li);
}
jQuery(".special").css("background-color","green");
是不是足夠快?
2
爲了獲得最佳性能,請在DOM外使用您的對象,並通過最後追加所有內容並委託您的事件來避免過多的重排。
$('<li/>', { ... }).appendTo('#el'); // Dynamic object, appended at last
$('ul').on('click', 'li', function(){ ... }); // Delegate events
如果你有在DOM元素來工作,那麼最好是detach()
元素或clone()
它,與它的工作,並append()
它的DOM一次。
0
按照這種模式與UL的DOM的外面工作:
// Clone the ul
var $the_ul = $('#the_ul');
var $new_ul = $('#the_ul').clone();
// Do stuff to $new_ul
// In this example create 5000 lis
for(var i = 1; i <= 5000; i++){
$new_ul.append($('<li class="li-' + i + '">foo ' + i + ' bar</li>'));
}
// Replace the ul in the dom with the updated one
$the_ul.replaceWith($new_ul);
見這個例子jsFiddle它創建5000個LIS,然後過濾它們(按類別),只顯示質數,以顯示該怎麼格局可以很有效率,你應該沒有問題。
相關問題
- 1. 批處理python進程列表元素
- 2. 使用snowfall :: sfLapply時正在處理哪個列表元素?
- 3. d3的關鍵函數可以處理一個列表元素嗎?
- 4. 一個可以處理Java中N個元素的數組?
- 5. 處理千兆字節的數據
- 6. 如何處理中AC陣列valarray中內接一個元素
- 7. 列表理解 - 2元素列表
- 8. 在WPF中呈現數千個Canvas元素的性能?
- 9. MooTools:元素處理
- 10. Jdom元素處理
- 11. 處理Thymeleaf元素
- 12. 處理「序列沒有元素」異常
- 13. CouchDB可以處理數千個獨立的數據庫嗎?
- 14. 計數列表中的元素數量
- 15. 有效處理兩個numpy數組中的對應元素
- 16. 刪除索引處的列表元素?
- 17. 返回列表中每個元素的第一個元素?
- 18. Android,Java:返回3個元素列表中的2個元素
- 19. 對齊列表元素中的元素
- 20. 添加查詢元素的列表到一個數組元素
- 21. Python列表理解:在列表中添加獨特的元素?
- 22. 如果列表理解中的列表元素條件
- 23. 列表理解,擺脫並行列表中的相應元素
- 24. 修改列表元素與Python中的列表理解
- 25. R:列表中的哪個元素對應於排序列表的元素
- 26. 列表形式的列表中的每個第n個元素
- 27. python struct.pack()列表中的單個元素?
- 28. 乘以列表中的單個元素
- 29. r-concatenate列表中的n個元素
- 30. 組合多個列表中的元素?
如果您將事件綁定到所有(或多個)這些'li'元素,請將事件處理程序綁定到父'ul'。這樣,你只有一個(更高效),並且隨着DOM事件向上冒泡,你仍然可以在那裏捕獲它們。 – 2012-02-22 22:18:27