我正在尝试使用is()
选择器创建悬停功能。但我需要的是相反的!
$('.tray .tab').is(".active").hover(
...function
);
我尝试了not()
选择器,但这是一种过滤方法,所以它不能按照我想要的方式工作。
$('.tray .tab').not(".active").hover(
...function
);
我要做的是如果你将一个包含类active
的元素悬停,则不应该执行该函数。
<div class='tray'>
<div class='tab'>Tab 1</div>
<div class='tab active'>Tab 1</div>
<div class='tab'>Tab 3</div>
</div>
我知道这可以通过if( $(this).is('.active') ){}
检查来实现,但是没有直接的方法吗?
提前谢谢!
[编辑:
我想这是我需要的not()
方法!但是当一个元素以类active
开始时它可以工作,但是当我用addClass()
添加它时,它不会。怎么样?
答案 0 :(得分:6)
此博客完全解答了您的要求:
http://ajpiano.com/the-opposite-of-jquerys-is-method-is-not-not-it-is-is/
最后一行说:
jQuery的.is()方法的反义词不是.not(),它是!.is()
答案 1 :(得分:3)
您可以将is()
与:not
选择器结合使用。
if( $(this).is(':not (.active)') ){}
这是基于is()
的Jquery文档的jsFiddle:
答案 2 :(得分:1)
is
返回一个布尔值,不是可链接的方法,因为它不返回jQuery对象,使用事件委托。
$('.tray').on({
mouseenter: function(){
// ...
},
mouseleave: function(){
// ...
}
}, '.tab:not(.active)');
答案 3 :(得分:0)
我知道这是旧的,但它很适合参考。检查是否使用jQuery禁用了一个元素。
时:
if($(this).is('.disabled')){
// Do something
}
不是:
if(!$(this).is('.disabled')){
// Do something
}