在網頁上我的項目(比如,產品卡,每個包含圖片和文字)的相當大名單 - 其中約1000。我想在客戶端過濾這個列表(只顯示那些未被過濾掉的項目),但是存在渲染性能問題。我申請一個非常狹窄的濾波器和10-20項仍然存在,則取消它(因此所有的項目都必須再次顯示),以及瀏覽器(Chrome很不錯的機器上)的一兩秒鐘掛斷。如何使用JavaScript最佳地呈現大量的DOM元素?
使用下列程序我重新渲染列表:
for (var i = 0, l = this.entries.length; i < l; i++) {
$(this.cls_prefix + this.entries[i].id).css("display", this.entries[i].id in dict ? "block" : "none")
}
字典是允許的項目IDS
這個功能本身運行瞬間的哈希值,它的渲染掛斷。有沒有比改變DOM元素的「顯示」屬性更好的重新渲染方法?
感謝您提前給出答案。
你很驚訝重新渲染1000個元素需要1-2秒?因爲我懷疑在任何時候都有1000個元素都可見,所以也許你應該處理可見的項目,然後在後臺工作以使其餘部分可用(每次使用setTimeout()每次執行50次以保持瀏覽器活躍)。或者,也許你應該只有在由於滾動而變得可見的時候纔會放棄。它也不會幫助您運行1000個單獨的選擇器操作,每個操作都必須搜索整個DOM。 – jfriend00 2012-04-14 05:49:11
給我們一個jsFiddle,我相信我們可以將切換性能提高10倍。代碼中有很多多汁的脂肪。 – jfriend00 2012-04-14 05:52:02