3

我正在尝试使用is()选择器制作悬停功能。但我需要的是相反的!

$('.tray .tab').is(".active").hover(
...function
);

我尝试了not()选择器,但这是一种过滤方法,所以它不能按我想要的方式工作。

$('.tray .tab').not(".active").hover(
...function
);

我想要做的是,如果您悬停包含 class 的元素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

4 回答 4

9

该博客准确地解决了您的问题:

http://ajpiano.com/the-opposite-of-jquerys-is-method-is-not-not-it-is-is/

它的最后一行说:

与 jQuery.is()方法相反的不是.not().

于 2013-04-02T23:10:44.267 回答
3

您可以is()与选择器结合使用:not

if( $(this).is(':not (.active)') ){}

这是基于 Jquery 文档的 jsFiddle is()

http://jsfiddle.net/Hjff5/

于 2013-04-02T23:13:14.547 回答
1

is返回一个布尔值并且不是可链接的方法,因为它不返回 jQuery 对象,使用事件委托。

$('.tray').on({
   mouseenter: function(){
     // ...
   },
   mouseleave: function(){
    // ...
   }
}, '.tab:not(.active)');
于 2013-04-02T23:20:11.083 回答
0

我知道这是旧的,但它是很好的参考。使用 jQuery 检查元素是否被禁用。

是:

if($(this).is('.disabled')){
    // Do something
}

不是:

if(!$(this).is('.disabled')){
    // Do something
}
于 2018-01-30T10:19:40.593 回答