jquery中有许多函数使用参数e
来访问某些内容或执行某些操作,例如阻止超链接使用e.preventDefault()
进行操作我们是否有必要定义或者在函数的参数中指定e
?
例如
$(document).ready(function () {
$("a").click(function () {
e.preventDefault();
});
});
即使我没有指定参数e
的变量。
所以我的问题是,如果我们指定参数e
,它会有什么不同吗?
答案 0 :(得分:6)
如果您想要访问属性或方法,您只需要(实际上必须)指定e
(或ev
或event
,或任何您想要调用它的方法)它
这不是总是的情况 - 旧的IE版本有一个全局window.event
变量,MS使用而不是传递参数,因此为什么有时会看到本机JS代码被写入像这样应对任何一种模式:
function handler(event) {
event = event || window.event;
...
}
JavaScript会忽略函数形式参数列表中不存在的传递参数,尽管它们仍然可以通过arguments
伪数组获得。
同样,任何不具有调用者提供的值的正式参数的值都为undefined
。
答案 1 :(得分:0)
是的,确实如此。
e
是事件对象。如果您有这样的元素:
<a href="/somewhere.html">Click me</a>
然后你的javascript将执行,然后事件将冒出来,页面将会改变。如果您不包含href
属性,则点击事件仍然“正在发生”,但该链接无论如何都不会发生。
取消事件会停止重定向(或提交,如果您正在谈论表单等)。
如果您退出参数,则仍可在arguments
变量中访问事件对象,因此如有必要,您仍可以稍后在函数中恢复它。
答案 2 :(得分:0)
变量e
不是一成不变的。这是一些开发人员为事件对象命名的内容,它是根据jQuery docs传递给事件处理程序的第一个参数。你可以根据自己的喜好来命名。
您可能会遇到一些调用名为e
的对象上的方法的代码,但它可能不是事件对象。检查您给予处理程序的调用,以便确定对它的期望。