2016-08-11 12 views
1

これは私の最初の質問です。私自身は答えを見つける前にほとんど助けを求めることはありませんが、toggleClassは最初のクリック(IE、FF)でのみ動作します

私は次があります。

HTML

<!-- This one opens/shows the nav. I should change div to a button tag --> 
<div class="menu"><a id="menu-open" class="menu-open" href="#">&#9776;</a></div> 
<nav id="navigation" class="navigation"> 
    <!-- This on closes/hide the nav --> 
    <button type="button" value="Close" class="button-close"> 
     <a id="menu-close" class="menu-close">X</a> 
    </button> 
    <h1>User Name</h1> 
    <p class="mail"><sec:authentication property="principal.username" /></p> 
</nav> 

CSS

.navigation { 
     position: fixed; 
     background: #fff; 
     width: 100%; 
     height: 100vh; 
     top: 0; 
     z-index: -100; 
     display: none; 
     text-align: center; 
     font-weight: bold; 
} 

.navigation-open { 
     z-index: 100; 
     display: inherit; 
} 

jQueryの

$(document).ready(function(){ 

    $(".menu-open").click(function(){ 
     $(".navigation").toggleClass("navigation-open")     
    }); 
    $(".menu-close").click(function(){ 
     $(".navigation").toggleClass("navigation-open") 
    }); 
}); 

私はメニューオープンクラス、実際にそれにタグを打ちますnavタグ(m私は、toggleClassが動作していると思う)、しかしその直後、私はメニュークローズクラスでタグを打ち、トグルが実行されていない。

この問題はIEとFFで起こるが、私は、私はすでに試した、IE 11、FF 46

をCH 52を使用してい

をCHません:

  • をjQueryのバージョンを変更します1.1からHTMLへ処理をe.stopPropagation()関数を使用し、リダイレクト
  • を3.xへ

これは私がナッツを運転しているので、私はこの1つの助けに感謝します。

ありがとうございます!

+1

は、なぜあなたはボタンの内側にアンカーを持っているのですか?ハンドラはアンカーにバインドされていますが、おそらくそれはクリックされているボタンですか? (実際にXをクリックしない限り) – billyonecan

+0

なぜ、ボタンの中にアンカーがあるのか​​、おそらくそのボタンはdivだったのでしょうか、アンカーはまだ残っているとは思っていませんでした。あなたが指摘しているのは悪いことです。それにもかかわらず。アンカーとボタンは同じサイズで、どちらも定義上の「クリック可能」要素と似ていますが、変更する必要があります。ヘッドアップをありがとう。 – markite

+0

あなたは実際に誰がハンドラであるかについてあなたは正しかった。私はクリック可能な要素の "開始"を行っていました。 – markite

答えて

0

ボタン要素内にアンカーがあってはなりません。

チェックこの:

$(document).ready(function(){ 
 

 
    $(".menu-open").click(function(){ 
 
     $(".navigation").toggleClass("navigation-open")     
 
    }); 
 
    $(".menu-close").click(function(){ 
 
     $(".navigation").toggleClass("navigation-open") 
 
    }); 
 
});
.navigation { 
 
     position: fixed; 
 
     background: #fff; 
 
     width: 100%; 
 
     height: 100vh; 
 
     top: 0; 
 
     z-index: -100; 
 
     display: none; 
 
     text-align: center; 
 
     font-weight: bold; 
 
} 
 

 
.navigation-open { 
 
     z-index: 100; 
 
     display: inherit; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<!-- This one opens/shows the nav. I should change div to a button tag --> 
 
<div class="menu"><a id="menu-open" class="menu-open" href="#">&#9776;</a></div> 
 
<nav id="navigation" class="navigation"> 
 
    <!-- This on closes/hide the nav --> 
 
    <button type="button" value="Close" class="button-close menu-close"> 
 
     X 
 
    </button> 
 
    <h1>User Name</h1> 
 
    <p class="mail"><sec:authentication property="principal.username" /></p> 
 
</nav>

+0

今は動作していますが、なぜですか?正しい要素に正しい処理を割り当てるのは間違いです。私はそのアンカーとボイラーを消去するだけなので、動作します! P.D .:それはそれが信じられない。 Damn – markite

+0

問題は、あなたが 'button'の中に' a'を持っていたからでした。ちょうど 'a'の**クリックだけがあなたの' click'イベントをトリガーしました(どこかボタンをクリックしません)。 – Dekel

+0

@markite、私の答えでも投票に感謝します:) – Dekel

関連する問題