javascript - *this* 相对于 event.target 的优势

标签 javascript jquery optimization

在事件监听器中使用 thisevent.target 更好/更快吗?

我一直在编写这样的代码(例如 jQuery):

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

我被告知用 this 替换 e.target 因为它“更好”。一个或另一个真的有任何优势吗?

我使用 target 是因为它是一种更通用的解决方案,因为它适用于委托(delegate)事件。我在进行基准测试时遇到了麻烦,因为我的测试因绑定(bind)而变得困惑(尽管很明显,在这种情况下,无论如何差异都太小了)

最佳答案

一个并不比另一个好,但它们做的事情不同:this 指的是事件附加到的元素,而 event.target 是调用事件的元素。

例如

div id=foo   
   div id=bar

当 click 附加到 foo 上,并且 bar 被点击时,事件将冒泡到 foo。在事件中,this 将引用 fooevent.target 将引用 bar

最终还是要看你需要处理哪个元素。

在 api.jquery.com/event.target 上有一个小例子说明了 event.target。这是一个使用该示例的小示例,但它也显示this:http://jsbin.com/adifan/edit#javascript,html,live

关于javascript - *this* 相对于 event.target 的优势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11307794/

相关文章:

javascript - jQuery:响应式垂直自动收报机

java - 为什么这段包含多个 "or"语句的代码比在 Java 中使用查找表稍微快一些?

javascript - 像 JQuery 一样将整个代码放在一起

javascript - jQuery 日期选择器 minDate 变量

javascript - Hadoop YARN 与 Yarn 包管理器命令冲突

javascript - 如何在 JQuery 中调整图像大小

JavaScript 不显示剩余字符,但可以在其他页面上运行

实际 HTML 元素的 JAVASCRIPT 数组

javascript - Window.onload 和排序

php - 优化 MySQL 查询以获得正确的页面模板