jquery .not()无效
我试图在每个实例上发生一些事情,除非有一个禁用类,但.not()似乎不起作用。 这是我的简短版本:
if($(this).not('.Disabled')){ -Do Something- }
但是,如果我扭转它,即
if($(this).is('.Disabled')){ -Do Something- }
然后“是”将在一个具有“残疾”类的元素上工作有点混淆从哪里开始。
你假设is
而not
彼此的对立面。 事实上,他们不是。 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 });