2017-05-16 8 views
1

Ich versuche zu erreichen, dass meine Taste reagiert wird. In genauen, auf den ersten Klick wenn Menü öffnet es verdunkelt den gesamten Bildschirm und markieren Sie das Menü, sowie overflow-y:hidden beginnt zu arbeiten, da mein Ziel ist, um sicherzustellen, wenn Menü öffnet, wird es keine Bildlauf haben. Dort, wenn das Hauptproblem auftritt, findet ein Überlauf versteckt statt und ich kann nicht abschalten, wenn ich erneut auf die Menütaste klicke. Wie erreicht man das?Warum kann meine Taste Überlauf-y nicht deaktivieren: versteckt?

meinem vorherigen jquery:

$("#button").click(function(){ 
     $('.slide').fadeToggle(500); 
     $('.darklayer').toggleClass('active'); 
     $('body').css({'overflow-y': 'hidden'}); 
}); 

hier ist mein neues jquery:

$("#button").click(function(){ 
     var $dark = $('.darklayer'); 
     $('.slide').fadeToggle(500); 
     ($dark).toggleClass('active'); 
      if($dark.is(':active')) { 
       $('body').css({'overflow-y': 'hidden'}); 
      } 
      else { 
       $('body').off('click'); 
      } 
    }}); 

Mein HTML:

<div class="darklayer"></div> 
    <header id="main_menu"> 
      <div id="menu"> 
       <ul class="slide"> 
        <li><a href="#">Поиск строения</a></li> 
        <li><a href="#">Оплатить ком услуги</a></li> 
        <li><a href=#>Обратиться за помощью</a></li> 
        <li><a href=#>Управляющая компания</a></li> 
        <li><a href="second_page.html">Обратиться в Акимат</a></li> 
        <li><a href=#>Объявления</a></li> 
        <li><a href="page.html">Информация о строении</a></li> 
        <li><a href=#>Обсуждения</a></li> 
        <li><a href=#>Помощь</a></li> 
       </ul> 
      </div> 
      <section id="main_header"> 
       <div class="left_header"> 
        <a href="index.html"><img src="svg/logo.svg" alt="logo" style="height: 16px; padding-left: 15px;"></a> 
        <p class="text_ru">ru</p> 
       </div> 
       <div class="right_header"> 
        <img class="btn search" src="svg/search.svg" alt="search" style="height: 18px; padding-left: 15px; padding-right: 30px; cursor: pointer; "> 
        <img class="btn" src="svg/pro.svg" alt="pro" style="height: 18px; padding-left: 15px; padding-right: 30px; cursor: pointer;"> 
        <img id="button" class="btn" src="svg/sandwich.svg" alt="sandwich" style="height: 18px; padding-left: 15px; padding-right: 30px; cursor: pointer;"> 
       </div> 
      </section> 
     </header> 
+1

Nukezhan, es nicht aussehen wie Sie selbst Sie Code aus Ihrer vorher Frage geändert, http://stackoverflow.com/questions/43996858/how-to-make-overflow-y-hidden-work- on-click-with-jquery –

+0

Entfernen Sie überschüssiges '}' von Ihrem JavaScript-Code. – Alexander

Antwort

1

try this: user hasClass wie unten

gezeigt
$("#button").click(function(){ 
     var $dark = $('.darklayer'); 
     $('.slide').fadeToggle(500); 
     $dark.toggleClass('active'); 
      if($dark.hasClass('active')) { 
       $('body').css({'overflow-y': 'hidden'}); 
      } 
      else { 
       $('body').off('click'); 
      } 
    }}); 
+0

vielen dank! Ich habe es endlich geschafft! =) –

1

Ich denke, Ihr Problem in der if-Anweisung Sie

if($dark.hasClass('active')) 

statt

if($dark.is(':active')) 
+0

Schätzen Sie Ihre Unterstützung! mein Freund! –

+0

@NukezhanMontreal Sie sind herzlich willkommen, können Sie mich abstimmen und akzeptieren [Bhushan Kawadkar] (http://Stackoverflow.com/users/649504/bhushan-kawadkar) antworten er eine Minute schneller als ich .. Einen schönen Tag :-) –

+0

Ich habe es angenehm gemacht! –

1

Können Sie versuchen, diese nicht verwenden kann?

 if($dark.is(':active')) { 
      $('body').css({'overflow-y': 'hidden'}); 
     } 
     else { 
      $('body').css({'overflow-y': 'visible'}); 
     } 
+0

vielen dank! Ich habe es endlich geschafft! =) –

+0

Herzlich willkommen! Sie können meine Antwort upvote, wenn Sie wollen :) – ronniel

Verwandte Themen