2015-02-08 2 views
0

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

Это мой JQuery код:

 <script> 
    $(document).ready(function(){ 
     $(".a-for-noti-scroll").on("click",function(){ 
      $("#nano").toggleClass("x"); 
      $(".top-triangle-noti-scroll").toggleClass("y"); 
      e.stopPropagation(); 
     }); 
     $("body").on("click",function(e){ 
      $('#nano').css('visibility', 'hidden'); 
      $(".top-triangle-noti-scroll").css('display', 'none'); 
      e.stopPropagation(); 
     }); 
    }); 
    </script> 

Но это не работает.

Я пробовал .hide() для body, но таким образом меню не открывается. Что мне делать?

+2

Попробуйте использовать $ (document) .on ("click" – Scottie

+0

И убедитесь, что вы добавили 'e' в качестве аргумента (' ... "click", function (e) {... '). – JCOC611

+0

дорогой друг это не работает, я добавляю документ вместо тела и добавляю e, но не работаю – arezoo

ответ

0

вы можете иметь логическую ошибку, попробуйте как в этом примере:

$(document).ready(function(){ 

    // click inside will leave it open 
    $("#noti").on("click",function(e){ 
     $('#noti').css('display','block'); 
     e.stopPropagation(); 
    }); 

    // just for this example to open the "menu" 
    $("#top").on("click",function(e){ 
     $("#noti").css('display','block'); 
     e.stopPropagation(); 
    }); 

    // any click around closes 
    $(document).on("click",function(e){ 
     $('#noti').css('display', 'none'); 
     e.stopPropagation(); 
    }); 
}); 

вот working fiddle

Это пример только для clickhandler штабелирования.

+0

что вы имеете в виду логическая ошибка? – arezoo

Смежные вопросы