17

これはとても簡単なはずですが、私にはうまくいきません。私は言いたい:

これにクラス「現在」がなく、ボディクラスが「ホーム」と等しくない場合は、これを行います....

これが私が(とりわけ)無駄にしようとしていることです。最初の条件のみが機能します。

$(".nav1 > ul > li").mouseleave(function() {

    if ( (!$(this).hasClass("current")) || (!$(body).hasClass("home"))  ){
         $(this).find(".nav-overlay").show();   
    }

}); 

私は何を間違っていますか?ありがとうございました!

明確にするための更新:

次の条件に該当する場合にのみ「.nav-overlay」を表示したい:

  1. ホームページにアクセスしていない (body class="home") かつ
  2. 「.nav1 > ul > li」クラスは「現在」と等しくありません
4

2 に答える 2

31

試してみて$("body")ください&&

   if ( (!$(this).hasClass("current")) && (!$("body").hasClass("home"))  ){
    //...

またはこのように、それはより短いです:

   if ( !$(this).is(".current") && !$("body").is(".home")  ){
     //...
于 2013-08-13T18:18:06.453 に答える
4

が変数でない場合bodyは、HTML タグとしてアクセスします: 引用符を追加します。また、代わりに(つまり) :AND&&||OR

if (!$(this).hassClass("current") && !$("body").hasClass("home")) {
    $(this).find(".nav-overlay").show();
}

jQuery オブジェクトの場合bodyは、直接実行できます... && !$body.hashClass(...)

于 2013-08-13T18:17:55.977 に答える