2017-03-17 4 views
0

Ich habe diese jquery Umschaltmenü und derzeit kann ich nur schließen, wenn ich die X-Taste gedrückt habe. Was ich erreichen möchte, ist es, es auch mit Escape-Schlüssel zu schließen. Würde mich über jede Hilfe freuen, die ich bekommen kann. Unten ist das Beispiel der verwendeten Codes.Schließen Menü mit Escape-Taste

HTML

<section class="menu-section"> 
    <div class="menu-toggle"> 
    <div class="one"></div> 
    <div class="two"></div> 
    <div class="three"></div> 
    </div> 
    <nav class="nav-hide"> 
     <ul role="navigation" class="hidden"> 
      <li><a href="#">work</a></li> 
      <li><a href="#">about</a></li> 
      <li><a href="#">resume</a></li> 
      <li><a href="#">contact</a></li> 
     </ul> 
    </nav> 
</section> 

Hier ist die JS.

$(".menu-toggle").on('click', function() { 
    $(this).toggleClass("on"); 
    $('.menu-section').toggleClass("on"); 
    $("nav ul").toggleClass('hidden'); 
}); 
+1

Mögliche Duplikat [Schließen JS Menu auf ESC] (http://stackoverflow.com/questions/29028740/close-js-menu-on-esc) – namzaG

Antwort

1

Key-Code für Esc ist 27, also können Sie fragen, ob sie gedrückt, und wenn ja, dann fragen, ob unsere nav ul nicht, daß die Klasse hidden

$(".menu-toggle").on('click', function() { 
 
    $(this).toggleClass("on"); 
 
    $('.menu-section').toggleClass("on"); 
 
    $("nav ul").toggleClass('hidden'); 
 
}); 
 

 
$(document).keyup(function(e) { 
 
    if (e.keyCode == 27) { // escape key maps to keycode `27` 
 
     if (!$("nav ul").hasClass("hidden")) {$("nav ul").toggleClass("hidden")} 
 
    } 
 
});
.hidden{display:none}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<section class="menu-section"> 
 
    <div class="menu-toggle"> 
 
    <div class="one">1</div> 
 
    <div class="two">2</div> 
 
    <div class="three">3</div> 
 
    </div> 
 
    <nav class="nav-hide"> 
 
     <ul role="navigation" class="hidden"> 
 
      <li><a href="#">work</a></li> 
 
      <li><a href="#">about</a></li> 
 
      <li><a href="#">resume</a></li> 
 
      <li><a href="#">contact</a></li> 
 
     </ul> 
 
    </nav> 
 
</section>

haben
0

Versuchen Sie mit dem Keyup-Ereignis: Schlüsselcode für Esc ist 27

$(document).ready(function(){ 
 
$(".menu-toggle").on('click', function() { 
 
    $(this).toggleClass("on"); 
 
    $('.menu-section').toggleClass("on"); 
 
    $("nav ul").toggleClass('hidden'); 
 
}); 
 
$("#btn").click(function(){ 
 
$("section.menu-section").toggle(); 
 
}); 
 

 
$(document).keyup(function(e) { 
 
    if (e.keyCode == 27) { // escape key maps to keycode `27` 
 
    //also check here some another stuff like menu already opend or not 
 
     $("section.menu-section").hide(); 
 
    } 
 
}); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<section class="menu-section"> 
 
    <div class="menu-toggle"> 
 
    <div class="one"></div> 
 
    <div class="two"></div> 
 
    <div class="three"></div> 
 
    </div> 
 
    <nav class="nav-hide"> 
 
     <ul role="navigation" class="hidden"> 
 
      <li><a href="#">work</a></li> 
 
      <li><a href="#">about</a></li> 
 
      <li><a href="#">resume</a></li> 
 
      <li><a href="#">contact</a></li> 
 
     </ul> 
 
    </nav> 
 
</section> 
 

 
<button id='btn'>HideShow Menu </button>

Verwandte Themen