2016-12-09 21 views
0

私はこのことを正しく行っているかどうかはわかりません。私はオープンとクローズを切り替えるメニューを持っています。メニューがhasClass("open");の場合、ボタンが表示されます。 class openがなくなればクラスを削除したいと思います。要素がクラスを追加するクラスに別の要素を持っている場合

ここはHTMLの部分です。 navaclosed

<nav> 
    <a class="closed"><i class="fa fa-bars"></i>Menu</a> 
     <ul> 
      <li>Menu items</li> 
     </ul> 
    <div class="close-btn"> 
     <i class="fa fa-times" aria-hidden="true"></i> 
    </div> 
</nav> 

HTMLが働くので、これはその重要ではありません、重要な部分は、要素があるということです。

jQueryの部分はここにあります。

$(document).ready(function(jQuery) { 
    if ($("nav a").hasClass("open")) { 
     $(".close-btn").addClass('show-me-the-button'); 
    } else { 
     $(".close-btn").removeClass('show-me-the-button'); 
    } 
}); 

しかし、これは機能しません。私はstackoverflowを検索しましたが、すべて私にこのコードを与えました...なぜそれが動作していないのか分かりません。私はスクリプトのエラーを取得...任意のヘルプ?

+2

メニューの 'open' /' close'クラスをトグルするイベントハンドラ内でコードを実行する必要があります –

+2

HTMLに '.close-btn'クラスの要素がありません。 – connexo

+0

こちらの情報が必要な場合もありますので、編集してください。 アイテムをクリックするか、ページの読み込み時にのみ開いたり閉じたりしていますか? 変更するときに "検出"しようとしていますか?そのような場合は、別のタイプのイベントを作成する必要があります。 –

答えて

3

初期ページの読み込み時にのみクラスをチェックします。 openクラスはどこで変更しますか?その場所でこのコードを移動する必要があります。

1

ユーザー - オリョールはこのようなハンドラ内にコードを配置しようとすると、正しい

です:

$(document).ready(function(jQuery) { 

    $('nav a').on('click', function(e) { // <----------- Click Handler (jQuery) 

     // Use $(this) to access current clicked element 
     if ($(this).hasClass("open")) { 
      $(".close-btn").addClass('show-me-the-button'); 
     } else { 
      $(".close-btn").removeClass('show-me-the-button'); 
     } 

    }) 

}); 

ホープ

Click Handler in jQueryについての詳細を参照してください。このことができます!

関連する問題