2017-08-18 3 views
0

非常に簡単なハンバーガーメニューがあります。私はjQueryを使用して、ハンバーガーがクリックされたときに開閉するように切り替えます。しかし、私はdivやメニューの外のどこかをクリックすると、ユーザーがそれを閉じることができるようにしたいと思います。コンテナの外をクリックするとハンバーガーメニューが閉じます

jsfiddleは私が書いたものです。スタイリングに気をつけないでください。

私は

$(window).on('click', function(){ 
    $('.responsive-menu').removeClass('expand'); 
}) 

しかし、それは追加で、私も、メニューを開くことができないようなものを使用したいと思います。助けてください。ありがとうございました!

+1

は、私たちはあなたのコードの残りの部分を見ると、どのようにこれらの行をしてください統合しているだろうか? –

+0

「divの外のどこにいても」という意味を具体的に説明できますか?ユーザーがページ上のリンクまたはボタンをクリックした場合にメニューが閉じると思われますか?幅と高さが100%の不可視のレイヤーをレイヤー化し、そのonclickを有効にしてから、その上に公開されたメニューを投げ込むことを考えましたか? –

+0

@DavyM行は純粋なCSSです – Ruby

答えて

3

クリックした要素に親.responsive-menuまたは.menu-btnがあるかどうかを確認するのが難しいです。

2つのいずれかがあり、メニューが展開されている場合は、切り替えます!

Updated Fiddle

$(document).on("click", function(e){ 
    if( 
    $(e.target).closest(".responsive-menu").length == 0 && 
    $(".responsive-menu").hasClass("expand") && 
    $(e.target).closest(".menu-btn").length == 0 
){ 
    $('.responsive-menu').toggleClass('expand'); 
    } 
}); 
+1

ねえ!ご回答いただきありがとうございます。そんな単純なケースがうまくいくとは思っていませんでした。全く理にかなっている! – Ruby

+0

お手数ですが –

1

あなたは示されており、あなたのページ全体を覆っているオーバーレイを追加することができます。

空のマークアップ<div class="overlay"></div>を追加し、cssを使用すると、ハンバーガーボタンがクリックされるまで隠すことができます。次に、オーバーレイをクリックすると、ボタンのクリックがトリガーされます。

私はあなたのフィドルを更新: https://jsfiddle.net/nd96f398/2/

+0

お元気です!これも完全にうまくいった。私はこれを念頭に置いておきます!ありがとうございました – Ruby

関連する問題