我知道E是“事件”的缩写,但我仍然不清楚为什么需要使用它?我尝试通过函数传递其他字母,但似乎没有用。是否还有其他需要将特定字母传递给函数的情况?
$("#myThing").click(function (e) {
var hit = $(e.target);
hit.css('color','blue');
});
这也是一样的事情:
$("#myThing").click(function () {
$(this).css('color','blue');
});
我应该何时使用$(this)与'e'?
谢谢!
答案 0 :(得分:4)
您无需通过该功能传递特定字母。
$("#myThing").click(function (e) {
var hit = $(e.target);
hit.css('color','blue');
});
与
相同$("#myThing").click(function (foo) {
var hit = $(foo.target);
hit.css('color','blue');
});
等
使用$(e.target)
和$(this)
之间的区别可能非常重要,因为this
始终是与事件相关的元素,而e.target
将是被点击的特定元素,即使它位于this
元素
希望有意义
答案 1 :(得分:2)
名称e
毫无意义;你可以随意调用它(显然只要你更新e
的引用)。
您发布的代码通常执行相同的操作;但请参阅以下代码:
<div><span>Hi</span></div>
JS:
$('div').on('click', function (e) {
alert(this === e.target);
});
(在此处运行:http://jsfiddle.net/Dxbwm/)
你会看到它是假的;那是因为this
是处理事件的元素,但是e.target
是事件源自的元素(在上面的示例中,是跨度)。如果你以前不知道这样的事件,那就叫做事件冒泡,你可以阅读更多关于它here 我的博客。
答案 2 :(得分:1)
事件可以随身携带数据(例如Dropped文件)。如果需要引用属于该事件的数据,请使用“e”。如果您只需要引用触发事件的元素 - 这是事件回调中指的是'this',请使用'this'。
答案 3 :(得分:1)
两个片段之间存在细微差别:在第一个片段中,元素hit
不能是#myThing
元素本身。
假设#myThing
是<p>
并且您点击了里面的链接:然后当事件到达#myThing
时,引用的元素e.target
是链接,而不是段落
相反,在第二个示例中,颜色变化的元素将始终为#myThing
因此,如果您将事件与处理程序一起传递,那是因为您可以方便地使用该事件。当您通过它时,您可以将其命名为e
或evt
或foobar
:因为您使用的是jQuery,所以您选择的变量名称不相关(但为了简单起见{ {1}}很短并且被广泛使用)。
传递此事件的最常见原因通常是
e
事件上的e.keycode
); 答案 4 :(得分:1)
在这种情况下,event.target
和this
指的是同一个元素。但是当你使用jQuery event delegation时,它们可能不匹配:
$('body').on('click', 'tr', function(event) { ... });
此处event.target
将引用触发事件的元素(例如,可能是'td'元素或其子元素),但this
将引用tr
元素。有时候同时使用它们都很方便。 )
此外,是的,事件对象有一些其他用途:用它可以阻止事件的传播等。