2011-02-14 120 views
37

我需要通過jQuery選擇器查找頁面中沒有類的所有跨度。選擇沒有任何類的元素

實施例:

<span class='Cool'>do not found me</span> 
<span>me, me, take me please!!!</span> 

回答

59

使用:not()attribute not selector [att!=val]過濾掉具有非空class屬性元素:然而

$('span:not([class!=""])') 

jsFiddle preview

注意[att!=val]是非易失標準的jQuery選擇器,這意味着選擇器不能用於CSS或with document.querySelectorAll()。如果你像我,你是個堅持己見繼該標準,因此希望在可能避開非標準jQuery選擇,下面是一個直接等同:

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

這符合

  • span元素有沒有class屬性,
  • span元素class屬性,但只有當屬性值爲空。

在大多數情況下,但是,你應該能夠逃脫僅僅是第一部分:

$('span:not([class])') 

你通常只能找到這就是負責應用程序生成的標記空class屬性輸出它,或者不注意的開發者。

+0

Bolclock嗨!不適合我!但相反,這工作得很好:跨度:不(([班級]) 謝謝你的建議!我做到了;) – PadovaBoy 2011-02-14 11:35:11

+0

@PadovaBoy:我的代碼如何不適合你? `[!=「」]`自從jQuery的第一個版本開始出現。 – BoltClock 2011-02-14 11:35:53

4

看到這個答案與CSS做只是Can I write a CSS selector selecting elements NOT having a certain class?

:not([class]) 

事實上,這將選擇什麼女巫沒有應用到它的.class。

我聚集了jsfiddle演示

HTML

<h2 class="fake-class">fake-class will be green</h2> 
<h2 class="">empty class SHOULD be white</h2> 
<h2>no class should be red</h2> 
<h2 class="fake-clas2s">fake-class2 SHOULD be white</h2> 
<h2 class="">empty class2 SHOULD be white</h2> 
<h2>no class2 SHOULD be red</h2> 

CSS

h2 {color:#fff} 
:not([class]) {color:red;background-color:blue} 
.fake-class {color:green} 
相關問題