щелкните в любом месте, чтобы закрыть меню; как мне сделать так, чтобы он перестал открываться при клике в любом месте

У меня есть меню, которое открывается при нажатии на вкладку, и я сделал так, что когда зритель щелкает в любом месте веб-страницы, меню снова закрывается. Однако меню также открывается при щелчке в любом месте веб-страницы. Как мне сделать так, чтобы щелчок по вкладке был единственным, что открывало меню, а нажатие на вкладку ИЛИ в любом другом месте закрывало его?

Вот что у меня есть:

<script type="text/javascript">
    $(document).ready(function(){
        $("#bodyw2").click(function(){
            $(".panel").toggle("fast");
            $(".trigger").toggleClass("active");    
            return true;
        });
    });

    $(document).ready(function(){
        $(".trigger").click(function(){
            $(".panel").toggle("fast");
            $(this).toggleClass("active");  
            return false;
        });
    });
</script>

Мой веб-сайт http://www.drippydenton.net/, если есть какие-либо другие вопросы относительно того, что я м говорю о.


person Emily Schlenker    schedule 04.09.2013    source источник


Ответы (2)


используйте hide() внутри события щелчка тела .. вместо toggle().

  $(document).ready(function(){
   $("#bodyw2").click(function(){
      $(".panel").hide("fast");
      $(".trigger").removeClass("active");

      return true;
   });
    $(".trigger").click(function(){
      $(".panel").toggle("fast");
      $(this).toggleClass("active");

      return false;
    });
 });

и вам не нужны две функции document.ready... добавьте все коды в одну функцию document.ready

person bipen    schedule 04.09.2013

Самый простой способ сделать это — привязать и отвязать событие щелчка для тела. Ваш код становится:

$(document).ready(function(){
    $(".trigger").click(function(){
        $(".panel").toggle("fast");
        $(this).toggleClass("active");

        $("#bodyw2").click(function(){
            $(".panel").toggle("fast");
            $(".trigger").toggleClass("active");
            $("#bodyw2").unbind('click');
            return true;
        });

        return false;
    });
});
person John Hunter    schedule 04.09.2013