Как поймать клик вне элемента (jQuery)?

в dom события распространяются по принципу пузырька — события передается от дочернего к родительскому, до самых до окраин. То есть, любой клик в пределах документа отразится на корневом элементе body.
То есть, берем и попросту сделаем скрытие меню, если событие клика пришло к нему.
  1. $('body').click(function() {
  2. // Скрыть меню
  3. });



Но, если кликнем на наше меню, то ничего подобного происходить не должно. То есть, дальше контейнера с меню данные события распространятся не должны.
  1. $('#menuContainer').click(function(event){
  2. // Клик оказался в пределах?
  3. // Распространению — нет!
  4. event.stopPropagation();
  5. });
Добавлю еще один вариант, которым я пользовался ранее. Принцип действия — проверка родителей элемента перебором, на наличие в нем «знакомых».
  1. $(document).click(function(e) {
  2. if ($(e.target).parents().filter('#menuContainer').length != 1) {
  3. $('#menuContainer').hide();
  4. }
  5. });

Комментарии