2016-07-27 3 views
0

私はクリックしたときに1つのリールを除外する必要があるレスポンシブメニューを持っています。クリックすると1つのリールが除かれます

メニューをクリックしたときにjQueryがアクティブな要素を変更していますが、画面のサイズを小さくするとメニューが3行目のアイコンの後ろに隠れてしまいます。

私は、3行目のアイコンがアクティブステータスを取得しないようにしたいと思います。 これはどのように行われますか?

マイHTML:

<nav> 
    <ul class="menu" id="myTopnav"> 
     <li><a class="active" href="#home">Home</a></li> 
     <li><a href="#news">News</a></li> 
     <li><a href="#contact">Contact</a></li> 
     <li><a href="#about">About</a></li> 
     <li class="icon"> 
      <a href="javascript:void(0);" style="font-size: 0.9375em;" onclick="myFunction()">☰</a> 
     </li> 
    </ul> 
</nav> 

私のjQuery:

$(document).ready(function() { 

    $("ul.menu li a").click(function() { 
     $("ul.menu li a").not(this).removeClass("active"); 
     $(this).toggleClass("active"); 
    }); 
}); 

おかげで、すべて。あなたがアンカーの親かどうかを確認することができます

答えて

0

あなたは、セレクタ内iconクラスでリーをフィルタリングすることができます:$("ul.menu li:not(.icon) a")

また、sidenoteとして、2番目のクエリの必要性を防ぐためにlistitemをバッファリングすることができます:

var lis = $("ul.menu li:not(.icon) a").click(function() { 
     lis.not(this).removeClass("active"); 
     $(this).toggleClass("active"); 
    }); 

Fiddle

+0

完璧な作業! ありがとうございます。 サイドノートは素晴らしいです。スクリプトが速くなるかどうかは分かりません。 –

+0

喜んで役立ちます:バッファリングされた項目のパフォーマンスの向上は無視できるかもしれませんが、しばしば、将来の適応で変更する必要がある場合に備えて、セレクタを一度しか持たない保守性にも役立ちます。それは大したことではないかもしれませんが、それは人生の中の小さなものです。:) –

0
$("ul.menu li a").not("li.icon").click(function() { 

http://api.jquery.com/not/

+0

を助けなら、私に知らせて、コンテキストを少し教えてください。コードのみまたはリンクのみの回答は高品質ではありません。 –

+0

私はコードを動作させることができました。 これ以上の答えは私が望むように働いた。 質問を書く前に私は実際に似たようなことを試みました。 –

+0

上記のコメントに "not"があったはずです。 申し訳ありません。 –

0

は、クラスiconを持っている:

$(document).ready(function() { 

    $("ul.menu li a").click(function() { 
     if(!$(this).closest('li').hasClass('icon')){ 
     $("ul.menu li a").not(this).removeClass("active"); 
     $(this).toggleClass("active"); 
    } 
    }); 
}); 
+0

完璧に作業しました! しかし、上記の回答より少し進んでいます。 ありがとうございます。 –

+0

@FlemmingLemche少なくともこれらの両方の回答をupvoteすることができます –

+0

問題はありませんが、私はあなたの答えをアップヴォートするにもかかわらず、評判が15未満でシステムが変わっていないからです。 申し訳ありません。 –

0

そう

$("ul.menu li:not(.icon) a").click(function() { 
    $("ul.menu li a").not(this).removeClass("active"); 
    $(this).toggleClass("active"); 
}); 

が好き:not(.icon)を使用してのような単純なものを行うことができ、それは

+0

完璧な作業!!! ありがとうございます。 –

関連する問題