Подтвердить что ты не робот

Предотвратить щелчок от родителя

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

Мой код:

<div id="popup">
  <div class="popup-content">Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.</div>
</div>

При нажатии на .popup-content он запустит событие клика, когда я не хочу, чтобы дети #popup делали это.

Код jQuery:

$('#popup').bind('click', function()
{
    $(this).remove();
});
4b9b3361

Ответ 1

попробовать:

e.stopPropagation();
return false; 

в обработчике событий

Ответ 2

В обработчике событий для #popup проверьте, есть ли e.target == this. то есть:.

$('#popup').bind('click', function(e) {
    if(e.target == this) $(this).remove();
});

Выполнение этого намного проще, чем привязка дополнительных обработчиков кликов ко всем дочерним элементам.

Ответ 3

$('.popup-content').bind('click', function(e)
{
    e.stopPropagation();
});

или

$('.popup-content').bind('click', function(e)
{
    return false;
});

В вашем случае - это то же самое, но иногда вы не можете делать такую ​​вещь без e.stopPropagation(). Например:

$('.popup-content a').bind('click', function(e)
{
    e.stopPropagation();
    return confirm("Are you sure?");
});

Ответ 4

{if(e.target == this ){ return;}});