2015-10-03 4 views
1

Я хотел бы добавить событие с j-запросом, где пользователь щелкает за пределами меню, в котором он анимирует слайд меню, и закрывает непрозрачность наложения. Вместо использования event.stopPropagation(); Я хотел бы это: JqueryЗакрыть меню с jquery при нажатии за пределами меню

$(this).click(function (event) { 
     if (!$(event.target).closest('').length) { 
      $("").hide(); 
     } 
    }); 

Я хочу использовать этот код в моем JQuery каким-то образом. Вот мой код: https://jsfiddle.net/2a4y4uds/2/

Немного новый для J-запроса, так терпите меня

+0

вы можете использовать библиотеку, если это хорошо для вас! Я использую этот: http://benalman.com/projects/jquery-outside-events-plugin/ –

ответ

1

Вы можете использовать переменные.

EDIT3 думаю, что я исправил ошибки сейчас.

JavaScript/JQuery:

DEMO

var menuopen = false; 
var menuclicked = false; 


    function animatemenu(){ 
     if (!$(".c-menu--slide-left").hasClass("Moved")) { 
      $(".c-menu--slide-left").animate({ 
       "left": "0px" 
      }, "slow").addClass("Moved"); 
      $(".menu-overlay").fadeToggle("slow"); 
      setTimeout(function(){ menuopen = true;}, 100); 
      // alert("open"); 
     } else { 
      $(".c-menu--slide-left").animate({ 
       "left": "-300px" 
      }, "slow").removeClass("Moved"); 
      $(".menu-overlay").fadeToggle("slow"); 
      setTimeout(function(){ menuopen = false, menuclicked = false;}, 100); 
      //alert("close"); 
     } 
    } 


$(document).ready(function() { 
    $(".menu").click(function() { 
    animatemenu(); 
    menuopen = false; 
    }); 

    $("#c-menu--slide-left").click(function() { 
    //alert("menu"); 
    menuclicked = true; 
    setTimeout(function(){ menuclicked = false;}, 1); 
    }); 
}); 



$(document).click(function() { 
     if (menuclicked == false){ 
      if (menuopen == true) { 
       animatemenu(); 
      } 
     } 
}); 
+0

Да, это в значительной степени. Просто ошибки раздражают, он закрывается и открывается дважды, и когда вы нажимаете внутри меню, он закрывает его. –

+0

Я обновил демонстрацию jsfiddle, я просто добавил еще один menuopen = false; подумайте, что нужно исправить открытую дважды ошибку. –

+0

Ницца это сработало. В любом случае, чтобы закрыть меню, если кто-то щелкнет в меню div. –

0

Я использую этот код:

// click anywhere hide the menus if it is visible 
$('html').click(function(event) { 
    if ($('#menu').is(':visible')) { 
     var re = new RegExp("menu_div"); 
     if (!event.target.id.match(re)) { 
      $('#menu').hide(); 
     } 
    } 
}); 
Смежные вопросы