jquery .not()无效

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

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

但是,如果我扭转它,即

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

然后“是”将在一个具有“残疾”类的元素上工作有点混淆从哪里开始。

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

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

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

.not方法返回一个jQuery对象,该对象包含此set中与选择器不匹配的元素。
它不返回布尔值。

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

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

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

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

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

如果您正在讨论disabled 属性 ,请使用:disabled selector:

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

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

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