при нажатии на ребенка не нажимать

У меня есть следующий 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, которое вызывается при нажатии на вложение, есть ли способ предотвратить это или проверить, по какому элементу щелкнули?

 xorinzor11 мая 2012 г., 17:48
Извините, я сделал несколько поисков как в Google, так и в stackoverflow, но не смог найти никаких результатов, которые могли бы мне помочь.

Ответы на вопрос(4)

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

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

$('.outerElement').click(function() {
  if ($(this).hasClass('attachment')) {
    return;
  }
  // Handle event
});
Решение Вопроса

Используйте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 );
});

Это работает без 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>
 A Child of God18 апр. 2018 г., 23:59
Кажется, что это будет работать, но что такоеevent

Ваш ответ на вопрос