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

Преимущество * this * over event.target

Лучше/быстрее внутри прослушивателя событий использовать this или event.target

Я писал такой код (например, jQuery):

jQuery('input').bind('keyup', function (e) {
 var j = jQuery(e.target);
 foo(j.attr('id') , j.val() );
});

И мне сказали заменить e.target на this, потому что он "лучше". Есть ли какие-то преимущества для одного или другого?

Я использую target, потому что это более общее решение, поскольку оно работает для делегированных событий. У меня проблемы с бенчмаркингом, потому что мои тесты загромождают привязку (хотя, очевидно, в этом случае разница будет слишком мала, чтобы иметь значение в любом случае)

4b9b3361

Ответ 1

Один не лучше другого, но он выполняет разные вещи: это относится к элементу, к которому привязано событие, а event.target - это элемент, вызывающий событие.

Например

div id=foo   
   div id=bar

когда клик присоединен к foo, и щелчок на панели, событие будет пузыриться до foo. В случае, если это будет означать foo и event.target для bar

В конце концов, это зависит от того, какой элемент вам нужно обрабатывать.

Вот небольшой пример на api.jquery.com/event.target, который иллюстрирует event.target. Вот небольшой пример, который использует этот пример, но который также отображает это: http://jsbin.com/adifan/edit#javascript,html,live

Ответ 2

Ну, в документации jQuery ясно сказано: -)

Свойство target может быть элементом, зарегистрированным для события или его потомком. Часто бывает полезно сравнить event.target с этим, чтобы определить, обрабатывается ли событие из-за барботажа событий. Это свойство очень полезно при делегировании событий, когда события пузырятся.

(Источник: http://api.jquery.com/event.target/)

В этой ссылке объясняется термин "пузырь событий": http://www.quirksmode.org/js/events_order.html