我是JS和jQuery的新手,我对于什么情况需要你将event
作为参数传递给函数有点困惑,以及你不会的情况需要。
例如:
$(document).ready(function() {
$('#foo').click(function() {
// Do something
});
});
与
$(document).ready(function() {
$('#foo').click(function(event) {
// Do something
});
});
答案 0 :(得分:4)
event
参数有一些用处。如果你真的要使用它,你只需要将它指定为你的处理程序的参数 - JavaScript处理可变数量的参数而不会抱怨。
您将看到的最常见用途是防止触发事件的操作的默认行为。所以:
$('a.fake').click(function(e) {
e.preventDefault();
alert("This is a fake link!");
});
...会阻止与fake
班级的任何链接在点击时实际转到他们的href
。同样,您可以使用它取消表单提交,例如在验证方法中。这喜欢 return false
,但更可靠。
jQuery的event
对象实际上是除IE之外的所有内容中提供的标准event
参数的跨浏览器版本。它本质上是一个快捷方式,它允许您只使用一个代码路径,而不必检查您在每个事件处理程序中使用的浏览器。
(如果你阅读非jQuery代码,你会看到很多以下内容,这是为了解决IE的不足。
function(e) {
e = e || window.event; // For IE
这很痛苦,图书馆让它更容易处理。)
There's a full accounting of its properties in the jQuery docs.基本上,如果你在那里看到任何你需要的东西,请加入它,不要担心。我总是喜欢把它包括在内,所以如果我认为毕竟需要它,我就不必记得在以后添加它。
答案 1 :(得分:2)
如果你要在处理程序的主体中使用它,你只需要该事件。
答案 2 :(得分:1)
由于您使用的是jQuery,因此如果您需要在处理程序中使用该事件,则只需将event
作为参数,例如,如果您需要在keypress
事件上按下的键。
在JS中,如果没有jQuery或Prototype等,您需要将event
作为标准兼容浏览器(如Firefox)的参数传递,但该事件不会作为IE中的参数传递。 IE实际上维护着一个全局变量window.event
。所以在你的处理程序(sans库)中,你需要检查参数是否为undefined
;如果是这样,抓住全局变量。
function eventHandler(evt) {
var theEvent = evt || window.event;
//use the event
}
但像jQuery这样的库会为你解决这个问题。
老实说,在你学会了这门语言之前,我不建议你使用图书馆。但如果这是一份工作,那么一定要使用图书馆,但要自己学习JS的细节,这样你就可以更好地欣赏它了。