Преимущество * 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, потому что это более общее решение, поскольку оно работает для делегированных событий. У меня проблемы с бенчмаркингом, потому что мои тесты загромождают привязку (хотя, очевидно, в этом случае разница будет слишком мала, чтобы иметь значение в любом случае)
Ответы
Ответ 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