JQuery MouseUp сообщает о дочернем элементе

Я получаю странное поведение с моим событием "mouseup". У меня есть div внутри div. Событие mouseup прикрепляется к ВНЕШНЕМУ div, но если я нажимаю на INNER div, e.target устанавливается в дочерний div вместо родительского div, в котором есть событие.

Это нормально?

<div class="parent">
    <div class="child"></div>
</div>

So a:

$("body").on('mouseup', '.parent',myMethod);

Сообщает e.target как дочерний элемент, если по нему точно нажали.


person Mark Löwe    schedule 03.09.2013    source источник
comment
Это нормально? Да. Это событие распространяется вверх по DOM.   -  person j08691    schedule 04.09.2013
comment
Размножение я понимаю, но разве оно не должно попасть к родителю? Отметим, нет даже на ребенке. Разве это не означает, что все элементы div будут сообщать о щелчке независимо от назначения события? Должен отметить, что у меня есть сотни обработчиков событий с дочерними элементами, и ни один из них этого не делает.   -  person Mark Löwe    schedule 04.09.2013
comment
Ознакомьтесь с объяснением api.jquery.com/on/#direct-and- делегированные-события   -  person j08691    schedule 04.09.2013
comment
@ j08691, добавил CW. В той ссылке, которую вы разместили, есть очень хорошее объяснение.   -  person Sergio    schedule 04.09.2013


Ответы (1)


Обратите внимание на разницу между .target и .currentTarget

Это свойство объектов события представляет собой объект, на который было отправлено событие. Он отличается от event.currentTarget, когда обработчик события вызывается на этапе всплытия или захвата события.

  • event.target // Ссылка на цель, на которую изначально было отправлено событие.
  • event.currentTarget // Ссылка на текущую зарегистрированную цель для события.

Стоит протестировать:

$("body").on('mouseup', '#parent1', function (e) {
    console.log(e.target,e.currentTarget);
});

Демонстрация jQuery
Демонстрация простой JavaScript


Больше чтения:

MDN: event.target
MDN: событие
jQuery (пояснение о прямых и делегированных событиях)

person Community    schedule 03.09.2013
comment
РЕШЕНО! О боже, не могу поверить, что выбрал не ту цель. ДЕРП! Большое спасибо. - person Mark Löwe; 04.09.2013