2012-01-28 116 views
10

如何僅在沒有任何類時使用jQuery來選擇元素?jQuery:僅當它沒有類名時才選擇一個元素

我正在寫一個頁面,它允許html作者通過向元素添加一個類來覆蓋默認的jQuery動作。它應該是任何課程。

所以標記可能是:

<ul> 
    <li class="override"></li> 
    <li></li> 
</ul> 

我想jQuery的,只選擇第二個列表元素,因爲它沒有一個類。

我看過.hasClass(),但它似乎需要一個特定的類名稱。

謝謝!

回答

18

:not() Selector – jQuery API

$('li:not([class])') 
+0

完美!這只是我想要的。 – 2012-01-28 02:01:52

+0

我很樂意提供幫助。你可以通過點擊左邊的勾號按鈕來接受我的答案,如果這是你的問題的真實答案:) – 2012-01-28 02:06:34

2

這應該做的事:$('li').not('li[class]')

+1

你的第二個'li'類型的選擇是多餘的。 – 2012-01-28 01:57:58

+0

是的。而我的解決方案也比其他的xD慢。至少我今天學到了一些新東西 – clime 2012-01-28 02:00:04

+0

不知何故,我認爲帶有:not屬性的單選擇器會比這個更快。我在某處讀到:沒有比.not更快 - 我猜測.not解決方案需要遍歷DOM兩次。 – 2012-01-28 02:06:14

8

這應做到:

$('li:not([class]),li[class=""]') 

演示:http://jsfiddle.net/aMC5X/

第一部分,li:not([class])使用"not selector"無線查找"has attribute"以查找根本沒有class屬性的任何li元素。

第二部分li[class=""]發現任何li元素的屬性設置爲空字符串。

+0

有趣。第二個要素是在「no class」集合中包含一個空的類名?這可能是一個好主意 - 你永遠不知道。 – 2012-01-28 02:04:08

+0

那麼,如果你玩弄我給你的jsfiddle,你可以看到發生了什麼,沒有第二部分,並決定你是否需要它在你的情況(我認爲你需要它)。 – nnnnnn 2012-01-28 02:09:53

1

您可以使用此:

if (!jQuery('li').hasClass('myClass') { 
    do something... 
} 
相關問題