我试图在每个实例上发生一些事情,除非有一个禁用的类,但.not()似乎不起作用。这是我的简短版本:
if($(this).not('.Disabled')){
-Do Something-
}
但是,如果我将其反转,即
if($(this).is('.Disabled')){
-Do Something-
}
然后“是”将对“禁用”类的元素起作用 有点困惑从哪里开始。
答案 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)
您假设is
和not
彼此相反。事实上,他们不是。 not()
将返回一个jQuery对象,而is
将返回一个布尔值,指示执行它的jQuery对象中是否至少有一个项符合您传递它的选择器。
以下内容应该可以完成您的尝试:
if(!$(this).is('.Disabled')){-Do Something- }
答案 3 :(得分:0)
jquery不会返回一个列表,其中删除了not参数中的元素,因此if语句实际上只是该列表的大小。你应该使用:
$(this).not('.Disabled').each(function() {
// do something
});