没有类名jquery选择器

时间:2014-12-31 02:16:04

标签: javascript jquery jquery-selectors

试过这个,但它似乎没有工作

$('this:not([class]="doneAnimated"'){

}

HTML

<div class="doneAnimated">
</div>
<div class="doneAnimated">
</div>
<div class="">
</div>

我想只选择没有.doneAnimated的div。

4 个答案:

答案 0 :(得分:4)

怎么样

$("div:not(.doneAnimated)")

直接查看类属性是一种脆弱的编程习惯。该类是列表,因此检查简单相等并不总是有效 - 如果它今天有效,则在以后的更改后可能无效。

如果您需要检查选择器是否未形成jQuery对象,可以使用.not()

$(this).not(".doneAnimated")

如果您想测试状态this

if (!$(this).is(".doneAnimated")) {
  // do something
}

.is()方法返回truefalse,而.not()就像jQuery对象内容的过滤器一样。

编辑评论指出,一般情况.is()的替代方案为.hasClass()

if (!$(this).hasClass("doneAnimated")) {
  // do something
}

请注意,对于.hasClass(),您只传入了类名,没有前导.,这是我犯过多次错误。

答案 1 :(得分:0)

$('div').not('.doneAnimated');

答案 2 :(得分:0)

$("div:not(.doneAnimated)")正是您要找的。 :not()函数可以包含任何CSS选择器,因此请将.doneAnimated插入其中。

答案 3 :(得分:0)

这是一个工作示例

HTML

<div class="doneAnimated" style="display:none">
    has doneAnimated class 1
</div>
<div class="doneAnimated" style="display:none">
    has doneAnimated class 2
</div>
<div class="" style="display:none">
    no doneAnimated class 1
</div>
<div class="randomClass" style="display:none">
    no doneAnimated class 2
</div>

<强> JS

$.each($("div:not(.doneAnimated)"), function() {
    $(this).show();
});

FIDDLE