在一個大的HTML頁面中,選擇一個元素的速度是否由id
決定於具有已定義的元素的總數id
?頁面中的ID數量是否會影響選擇器的效率?
考慮以下情形:我們有一個大的HTML頁面數以萬計的DOM元素,並且我們有一個看起來像這樣10000+元素:
<div id="tooltip555">
<label>Tooltip</label>
<div>
<i class="icon"></i>
<span>Tooltip body</span>
...
</div>
</div>
我知道這是更快地選擇一個元素直接通過ID(Performance of jQuery selector),所以在技術上,而不是選擇tooltip555
與鏈選擇器(如'#tooltip555> div> span')內的組件,如果我爲其計劃的每個子項生成一個id,會更快使用並選擇它使用#tooltip555_div_span
,但導致多3倍與定義ID的DOM元素?
'id'屬性的數量,no。元素的數量,是的。但是,除非你有成千上萬的元素,否則它不應該成爲問題。在這種情況下,我會使用'#tooltip555> div> span'選擇器。被篩選的元素匹配集將被id選擇器大幅減少,因此性能應該很好。 –
那麼我想到的第一個想法是,一旦你指定了一個選擇器,jQuery **就有**至少遍歷所有的選擇器,所以'id','class'等應該沒有關係。 –
@RoryMcCrossan,我問這是因爲我確實有性能問題,我有一個單頁網站動態更新其內容,更多的元素生成然後刪除,導致一些腳本涉及許多選擇laggy。我知道我應該重新設計一些算法,但我只是想知道是否可以節省一些時間使用更多/更少的ID,並減少/增加選擇器的複雜性 –