Исключить селекторы из родительского div - PullRequest
2 голосов
/ 03 февраля 2012

Мне нужно вызвать событие (например, скрыть плавающую корзину) при нажатии на фон страницы (#page), но это событие не должно происходить при нажатии внутри содержимого. Поэтому мне нужно, чтобы это событие происходило на месте: страница минус контент. Как мне этого добиться? Спасибо

Если у меня есть такая структура:

<body>
<div id="page">
   <div id="content">
     here
   </div>
</div>
</body>

var outer= jQuery("#page");
jQuery(outer).click(function(){
  jQuery(cos_de_cumparare).toggle();
});

Ответы [ 3 ]

2 голосов
/ 03 февраля 2012

Вы можете проверить цель события и действовать соответственно

var outer= jQuery("#page");
outer.click(function(e){
       //trigger the event only if the target of the click is the page
       if(e.target.id === 'page'){
         alert('click');
       }
});

скрипка здесь http://jsfiddle.net/wNsd7/

1 голос
/ 03 февраля 2012

Попробуйте и проверьте http://jsfiddle.net/qgUjb/4/

$("#page").click(function(event) {
   if(event.target.id == "content") return;
   $("#content").toggle();
});
1 голос
/ 03 февраля 2012

Для этого вы можете остановить событие, распространяющееся вверх по цепочке.

Обычный способ сделать это - прикрепить событие click к дочерним элементам и остановить распространение оттуда так, чтобы:

$("#page div").click(function(e){
   e.stopPropagation();
})

Вот пример

...