jQuery获取没有类属性的所有div


68

获取所有具有class属性的div

$('div[class]')

获取所有没有class属性的div

$('div[class!=""]')

该代码有效,但我不明白为什么有效。如果以上代码有效,则所有具有class属性的div的代码应为

$('div[class=""]') 

这不会产生任何结果。


我不明白为什么这个条目有这么多的票-甚至没有问一个问题。
马特

Answers:


137

尝试使用:not()伪类选择器

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

编辑

jQuery选择器的说明说:

这意味着div[class=""]将选择具有class指定为空值的属性的所有DIV元素。

但是最后一个选择器是jQuery的专有选择器,而不是CSS选择器。您将需要使用:not()选择所有没有类的DIV元素:

div:not([class])

嗯..这没有回答提出的问题。
Scott Evernden 09年

15
@斯科特·埃弗顿(Scott Evernden):嗯,实际上我看不到任何问题。;)
Gumbo

对于多种not情况,您可以执行以下操作 div:not([class], [style])
jocull

21

重要的是要意识到,有空的类属性以及没有类属性的元素,但是它们需要选择不同的测试。

有许多测试都可以做不同的事情。这是我们用于测试的HTML:

<div class="">Empty Class Attribute </div>
<div class="column">Full Class Attribute </div>
<div>No Class Attribute </div>

现在,让我们运行测试(第一部分只是一个字符串,可以帮助我们知道警报中刚刚调用的内容,否则就没有意义了)

$(document).ready(function(e){
  // Outputs "Empty Class Attribute Full Class Attribute"
  alert( "div[class] : "     + $('div[class]').text()     );

  // Outputs "Full Class Attribute"
  alert( "div[class!=''] : " + $('div[class!=""]').text() );

  // Outputs "Empty Class Attribute" 
  alert( "div[class=''] : "  + $('div[class=""]').text()  );

  // Outputs "No class Attribute"
  alert( "div:not([class]) : " + $('div:not([class])').text()     );
});

您可以通过访问以下位置在浏览器中查看此代码:http : //jsbin.com/ijupu

现在,有了这些知识,如果您想选择div页面上具有空白属性或没有属性的每个元素,请使用以下选择器:

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

4

$('div[class=""]')选择基本上写着:“把所有的div元素,它的类属性有一个空字符串作为它的价值。” -排除所有在class属性中具有ANY值的div元素(空字符串除外)以及所有根本没有设置class属性的div元素。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.