2014-01-14 36 views
2

通過類名選擇元素很容易。但是,是否可以選擇任何在jQuery中根本沒有類集的DOM元素?一種空的樣式選擇器。在jQuery中選擇沒有樣式的元素

例子:

<div class="nope"> 
    <div>You need me!</div> 
</div> 
<span class="foo">Not me</span> 

var answer = $("selector-im-looking-for").text(); // You need me! 

回答

4

我建議:

$('div').not('[class]'); 

JS Fiddle demo,請注意,這種方法不能選擇<span>元素(以下有關HTML)。

或者,選擇所有元素,而一個類屬性:

$('body *:not("[class]")') 

JS Fiddle demo,注意,這也無法選擇<span>元素。

通用選擇器(*)隱含在僞類選擇器沒有標籤名的情況下,但在使用它的情況下,我更喜歡明確它,儘管在這種情況下它是可選的。

此外,爲了選擇所有元件時,<body>內,與不用class屬性,與類屬性,但沒有設置類名:

$('body *').filter(function(){ 
    return !this.className || !this.className.length; 
}) 

JS Fiddle demo,這種方法,因爲它測試了className屬性的缺失以及空的/零長度的className屬性,因此成功找到了<span>

上述演示均使用具有以下HTML:

<div class="nope"> 
    Some text that should not be selected. 
    <div>You need me!</div> 
</div> 
<span class="foo">Not me</span> 
<span class="">Me too (probably)</span> 

參考文獻:

+0

Tnx!這是我正在尋找的選擇器。我會在大約9分鐘內接受它作爲答案... – Andries

+0

你真的很受歡迎,我很高興能夠得到幫助! –

2

你需要下列?

var answer = $("div").text(); // You need me! 

或者

var answer = $(":not(.nope)").text(); // You need me! 

編輯以下澄清:

喜歡這個?

var answer = $('div:not([class])'); 
+0

Tnx爲您的答案。但我尋找一個選擇器,選擇任何沒有類設置的元素。 – Andries

+0

看我的編輯,這應該不匹配任何類。 –

+0

Tnx,最後一個是對的,但我只能接受一個。但是,無論如何,tnx! – Andries

1

您可以使用過濾器,

$('div').filter(function(){ 
    return $(this).attr('class') === null; 
}).each(function(){ 
    //iterate item 
}) 
+1

我希望我已經讓你沒有冒犯,但我選擇了格式化你的答案(爲了呈現代碼*作爲代碼*和可讀性)。對於格式化幫助(幫助您將代碼格式化爲代碼),請查看[Markdown幫助頁面](http://stackoverflow.com/editing-help/)。 :) –

相關問題