Вопрос по javascript, javascript-events, jquery – при нажатии на ребенка не нажимать

11

У меня есть следующий HTML-код:

<code><div class="outerElement">
    <div class="text">
     Lorem ipsum dolar sit amet
    </div>
    <div class="attachment">
      <!-- Image from youtube video here -->
    </div>
</div>
</code>

И у меня есть событие jQuery onclick для & quot; .outerElement & quot; тем не менее, я не хочу & quot; .outerElement & quot; Событие onclick, которое вызывается при нажатии на вложение, есть ли способ предотвратить это или проверить, по какому элементу щелкнули?

Ваш Ответ

4   ответа
0

onclick="event.stopPropagation();" на детей подойдет.

0

Не уверен, что ты сможешь предотвратить запуск события, когдаattachment элемент нажат, но вы можете отфильтровать его

$('.outerElement').click(function() {
  if ($(this).hasClass('attachment')) {
    return;
  }
  // Handle event
});
19

Используйтеevent.stopPropagation() на дочернем элементе.

$(".attachment").on("click", function(event){
  event.stopPropagation();
  console.log( "I was clicked, but my parent will not be." );
});

Это предотвращает всплытие события DOM на родительский узел.

Также частьevent объект этоtarget member. Это скажет вам, какой элемент вызвал событие для начала. Тем не менее, в этом случае,stopPropagation кажется лучшим решением.

$(".outerElement").on("click", function(event){
  console.log( event.target );
});
2

Это работает без jQuery

<div class="outerElement">
    <div class="attachment">Hello</div>
</div>

<script type="text/javascript">
document.getElementsByClassName('outerElement').onclick = function(){

    alert('You clicked on parent');

}
document.getElementsByClassName('attachment').onclick = function(){

    event.stopPropagation();
    alert('You clicked on child');

}
</script>
Кажется, что это будет работать, но что такоеevent A Child of God

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