jquery .not()无效

时间:2011-04-04 01:10:12

标签: jquery

我试图在每个实例上发生一些事情,除非有一个禁用的类,但.not()似乎不起作用。这是我的简短版本:

if($(this).not('.Disabled')){
     -Do Something-
}

但是,如果我将其反转,即

if($(this).is('.Disabled')){
     -Do Something-
}

然后“是”将对“禁用”类的元素起作用 有点困惑从哪里开始。

4 个答案:

答案 0 :(得分:5)

.not method返回一个jQuery对象,其中包含此集合中与选择器不匹配的元素 它不返回布尔值。

换句话说,它与.filter相反,而不是.is

您可以编写if ($(this).not('.Disabled').length)来检查它创建的jQuery对象是否为空。

但是,您应该使用一元否定运算符:if (!something)

答案 1 :(得分:3)

您希望使用hasClass来测试元素是否具有类:

if($(this).hasClass("disabled")) {
    // i am disabled
}

如果您正在谈论已禁用的属性,请使用:disabled选择器:

if($(this).is(":disabled")) {
    // i am disabled
}

答案 2 :(得分:2)

您假设isnot彼此相反。事实上,他们不是。 not()将返回一个jQuery对象,而is将返回一个布尔值,指示执行它的jQuery对象中是否至少有一个项符合您传递它的选择器。

以下内容应该可以完成您的尝试:

if(!$(this).is('.Disabled')){-Do Something- }

答案 3 :(得分:0)

jquery不会返回一个列表,其中删除了not参数中的元素,因此if语句实际上只是该列表的大小。你应该使用:

$(this).not('.Disabled').each(function() {
// do something
});