在事件监听器中使用 this
或 event.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 将引用 foo,event.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/