2014-07-21 133 views
3

我一直在使用這兩個互換,所以我決定切換到一個。當我試圖做到這一點時,我遇到了一些奇怪的行爲。使用.classed("className", bool).attr("class", "className")之間有什麼區別?分類()和attr(「class」)之間的區別

+0

什麼是「奇怪」的行爲?也許這會回答你對不同的問題。 :) – epascarello

+0

其中,我會嘗試拿出一個簡潔的解釋,但我的代碼老實說有點亂。我一般也只是好奇,因爲我總是認爲這些是相同的。 –

回答

4
.classed("name", bool) 

添加或刪除提供的類。它將所有其他類應用到機器上。所以<div class="foo bar" >在調用.classed w/true後會是<div class="foo bar className" >

.attr("class", "className") 

將擦除應用於該元素的所有類並只添加該類名。所以<div class="foo bar" >在用attr調用之後應該是<div class="className" >

+0

謝謝,這對我很重要。我沒有意識到會是這樣,所以現在我會更加小心。還有一件事,在不同情況下使用這兩種編碼方法是否合適? –

+0

雖然公平,但使用'.attr(「class」,「className1 className2」)'將應用這兩個類名 - 不只是一個。關鍵的區別在於'attr'實際上會替換完整的'class'屬性。 :) –

+1

當你控制了元素(你創建,修改和刪除它們)時,我認爲可以使用'attr('class','className')'。如果您將類指定給可由其他人修改或設置樣式的對象,則我更願意使用'classed('className',true)'添加類。 –

相關問題