щелчок мышью где-то в другом месте на странице (не на определенном отделении)

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

12
задан coure2011 9 August 2010 в 12:36
поделиться

4 ответа

$(document.body).click(function(e){
   var $box = $('#little-pop-up-box-id');
   if(e.target.id !== 'little-pop-up-box-id' && !$.contains($box[0], e.target))
      $box.remove();
});

e.target - это узел DOM , который получил событие щелчка . Сначала я проверяю, соответствует ли ID этого элемента не тот, который мы ищем.

Вторая проверка ! $. Contains ($ box [0], e.target) проверяет, что узел DOM вызова не находится внутри ] элемент, который мы хотим скрыть.

Что ж, я думаю, пора плагин! :

(function($){
   $.fn.outside = function(ename, cb){
      return this.each(function(){
         var $this = $(this),
              self = this;
         $(document.body).bind(ename, function tempo(e){
             if(e.target !== self && !$.contains(self, e.target)){
                cb.apply(self, [e]);
                if(!self.parentNode) $(document.body).unbind(ename, tempo);
             }
         });
      });
   };
}(jQuery));

синопсис

$('#container').outside('click', function(e){
    $(this).remove();
});

Пример:

http://www.jsfiddle.net/qbDKN/30/

17
ответ дан 2 December 2019 в 07:20
поделиться

Решение @jAndy хорошее, но я также хотел упомянуть плагин Бена Алмана «Внешние события» . Вот краткий пример его использования:

$("#popup").bind("clickoutside", function(event){
  $(this).hide();
});
4
ответ дан 2 December 2019 в 07:20
поделиться

Захватите глобальное событие щелчка или настройте прозрачный div 100% / 100% под всплывающим окном с таким событием.

0
ответ дан 2 December 2019 в 07:20
поделиться
$("html").click(function(){
//close popup
});
0
ответ дан 2 December 2019 в 07:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: