我正在學習使用jQuery進行DOM操作,並希望瞭解瀏覽器性能的最佳實踐。jQuery DOM操作 - 性能比較?
說我有兩個DOM元素(div,p,ol等),我希望用戶只能看到第一個元素,然後只看到第二個元素。
我:
- 使用替代()
- 刪除()的第一個元素,並添加()的第二個元素
- 隱藏()的第一個元素和show()的第二個元素
之間有什麼性能差異:
- 1對2
- 2對比3
- 1對3
是否有附加的性能方面的考慮,如果元素是不同類型的?或者如果元素是按鈕或表單域?
我正在學習使用jQuery進行DOM操作,並希望瞭解瀏覽器性能的最佳實踐。jQuery DOM操作 - 性能比較?
說我有兩個DOM元素(div,p,ol等),我希望用戶只能看到第一個元素,然後只看到第二個元素。
我:
之間有什麼性能差異:
是否有附加的性能方面的考慮,如果元素是不同類型的?或者如果元素是按鈕或表單域?
由於browser reflow(其中瀏覽器必須重新呈現頁面的一部分或全部),因此刪除元素並將其添加到DOM中的成本很高。你想盡可能避免迴流;他們是昂貴的。
更換基本上是一個刪除,然後再添加,所以上述適用。
顯示和隱藏是最好的,因爲它只是爲元素添加樣式。
您應用這些方法的元素類型也不應導致上述變化。
總之,使用.show()
和.hide()
以獲得最佳性能。
感謝您提供關於迴流的說明。 –
謝謝@亞歷克斯!對於對更多信息感興趣的讀者(除了鏈接),我發現了另一篇值得分享的描述性文章[來自Opera團隊](http://dev.opera.com/articles/view/efficient-javascript/?page=3 ) –
基本上,如果你不想隱藏某些東西然後再顯示它,最好隱藏()和show()。這不會改變關於dom的任何事情,只是改變它的顯示方式。
我想說這取決於你如何以及在哪裏生成你的標記(即你需要如何靈活),例如,當你使用替換/刪除/添加時,你不得不生成內容JS端。如果您對性能非常感興趣,可以在此處輕鬆測試您的案例:http://www.jsperf.com – m90