我正在尋求解決我在使用非常大的DOM時遇到的性能問題。實質上,這是一個使用contenteditable
divs
的瀏覽器內的文字處理風格的應用程序。在大DOM上使用jQuery.nextUntil的性能
假設我有這樣的結構:
<div class="header">...</div>
<div class="actor">...</div>
<div class="director">...</div>
<div class="producer">...</div>
<div class="writer">...</div>
<div class="executive">...</div>
<div class="studio">...</div>
<div class="footer">...</div>
我然後有一些代碼,最終返回(例如):
<div class="writer">...</div>
作爲jQuery對象。然後我需要檢索header
和footer
之間的所有對象周圍的divs
作爲選擇,然後使用例如class
進一步過濾該列表。 'actor'
。
目前,我有以下的代碼,它工作正常:
// Find header
var header_object = object.prevUntil(".header").last().prev();
// Select all objects between header and footer, and then filter
var object_list = header_object.nextUntil(".footer", ".actor");
// Iterate through object_list
object_list.each(function()
{
// Run additional code on the objects
});
唯一的問題是,由於應用是各種各樣的文字處理器,DOM結構往往是非常大(例如超過5000元素)並執行此代碼會將瀏覽器鎖定一段不可接受的時間(超過10 - 30秒)。
因此,我正在尋找一種方法來定製代碼,使其更有效率/提高性能。
我還應該指出,上面的HTML結構不是(header - 5000 elements - footer)
,而是200 x (header - elements - footer)
。因此,每個遍歷操作僅包含從頁眉到頁腳的25個元素,但它必須運行很多次。
有什麼建議嗎?非常感謝!
_AS jQuery對象。然後我需要在頁眉和頁腳之間檢索所有這個對象的周圍div。你能更好地解釋這個部分嗎? –
你不能''(「。writer」)。siblings()。each(function(){});'? –
將它們放在容器中而不是使用兄弟類名,然後只是迭代該容器的子元素,而不是每次都挖掘一堆元素。 – dandavis