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.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 に答える