jQuery的.is()选择器的反义词是什么?

时间:2013-04-02 23:06:25

标签: jquery jquery-selectors

我正在尝试使用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()添加它时,它不会。怎么样?

4 个答案:

答案 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:

http://jsfiddle.net/Hjff5/

答案 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
}