2016-07-14 45 views
2

我已經增加了一個班多個元素的功能...addClass在對多個元素的同時

$('html, body, .site-inner, #page').addClass('black-hover'); 

然而它看來,類不是在同一時間加入不會發生, 是否有一個原因?

black-hover只是一個黑色的背景,我想知道是否因爲我使用了一些選擇器'html, body, .site-inner'等?

+4

你怎麼知道他們並非全部都是同時添加的? – Scimonster

+2

該類將通過這些元素循環添加,但迭代和DOM更新之間的延遲幾乎不可察覺。你能否添加一個這個問題的實例,因爲我從未見過這種行爲。 –

+1

_class不會在同一時間添加_什麼意思?這不會爲每個元素添加類嗎? – Jai

回答

4

的背後你的jQuery addClass調用的簡單的替代代碼是類似的東西:

var elements = document.querySelectorAll('html, body, .site-inner, #page'); 
for (var i = 0, len = elements.length; i < len; i++) { 
    if ((' ' + elements[i].className + ' ').indexOf(' black-hover ') === -1) 
     elements[i].className += ' black-hover'; 
} 

顯然,類添加到在迭代每個元素,所以元素不會在同一時間修改,援引羅裏McCrossan的comment

本課程將在一個循環中通過這些元素被添加,但是迭代和DOM更新之間的延遲 應該幾乎 impercept IBLE。