在Javascript / jQuery中(e)是什么意思?
我是JavaScript / jQuery的新手,我一直在学习如何创build函数。 (e)括号中出现了很多函数。 让我告诉你我的意思:
$(this).click(function(e) { // does something });
它总是显示函数甚至不使用(e)的值,那么为什么它经常出现?
e
是将传递给事件处理程序的event
对象的short var引用。
事件对象本质上有很多有趣的方法和属性可以在事件处理程序中使用。
在你发布的例子中是一个MouseEvent
的点击处理程序
$(<element selector>).click(function(e) { // does something alert(e.type); //will return you click }
DEMO – 鼠标事件DEMO使用e.which
和e.type
一些有用的参考:
http://api.jquery.com/category/events/
http://www.quirksmode.org/js/events_properties.html
http://www.javascriptkit.com/jsref/event.shtml
e
没有什么特别的意义。 当参数是event
时,只使用e
作为函数参数名称的约定。
有可能
$(this).click(function(loremipsumdolorsitamet) { // does something }
以及。
免责声明:对于这个特定的post,这是一个非常迟缓的回应,但正如我一直在阅读对这个问题的各种回应,它让我感到大部分的答案使用术语,只有经验丰富的编码人员才能理解。 这个答案是试图解决与新手观众的原始问题。
介绍
这个小东西实际上是Javascript中被称为事件处理函数的东西的一部分。 每个事件处理函数接收一个事件对象。 为了讨论的目的,把一个对象看作一个包含一堆属性( variables )和方法( 函数 )的“事物”,就像其他语言中的对象一样。 小东西里面的' e ',就像一个variables,它允许你和对象交互(而且我非常松散地使用术语variables )。
考虑下面的jQuery示例:
$("#someLink").on("click", function(e){ // My preferred method e.preventDefault(); }); $("#someLink").click(function(e){ // Some use this method too e.preventDefault(); });
说明
- “#someLink”是你的元素select器(HTML标签将触发这个)。
- “点击”是一个事件(点击所选元素时)。
- “函数(e)”是事件处理函数(在事件对象创build时)。
- “e”是对象处理程序(对象是可访问的)。
- “preventDefault()”是对象提供的方法(函数)。
发生了什么?
当用户点击ID为“#someLink”的元素(可能是一个锚标签)时,调用一个匿名函数“function(e)” ,并将结果对象赋给一个处理函数“e” 。 现在,使用该处理程序并调用其中一个方法“e.preventDefault()” ,该方法应该阻止浏览器对该元素执行默认操作。
注意:句柄几乎可以任意命名(例如' function(billybob) ')。 'e'代表'事件',这似乎是这种types的function相当标准。
虽然'e.preventDefault()'可能是事件处理程序最常用的用法,但是对象本身包含许多可以通过事件处理程序访问的属性和方法。
关于这个主题的一些非常好的信息可以在jQuery的学习站点http://learn.jquery.comfind 。 请特别注意使用jQuery Core和Events部分。
e
参数是事件对象的简称。 例如,您可能想要为取消默认操作的锚定创build代码。 要做到这一点,你会写如下的东西:
$('a').click(function(e) { e.preventDefault(); }
这意味着当单击<a>
标签时,阻止click事件的默认操作。
虽然你可能会经常看到它,但是即使你已经指定了它作为参数,也不能在函数中使用它。
在这个例子中, e
只是该函数的一个参数,但它是通过它传入的event
对象。
在jQuery e
event
简称中,是当前的事件对象。 它通常作为parameter passing给事件函数。
演示: jQuery事件
在演示中我使用了e
$("img").on("click dblclick mouseover mouseout",function(e){ $("h1").html("Event: " + e.type); });
我也可以使用event
$("img").on("click dblclick mouseover mouseout",function(event){ $("h1").html("Event: " + event.type); });
一样!
程序员是懒惰的,我们使用了很多速记,部分是减less了我们的工作,一部分是有助于可读性。 理解这将有助于你理解编写代码的心态。
今天我刚刚写了一篇关于“为什么我们在e.preventDefault()中使用像”e“这样的字母的post? 我想我的答案会有所帮助
首先,让我们看看addEventListener的语法
通常它会是: target.addEventListener(type,listener [,useCapture]);
而addEventlistener参数的定义是:
键入 :表示要侦听的事件types的string。
listener :当发生指定types的事件时,接收通知的对象(实现Event接口的对象)。 这必须是实现EventListener接口或JavaScript函数的对象。
(来自MDN)
但是我觉得应该注意一点:当你使用Javascript函数作为监听器时,实现Event接口的对象(对象事件)将被自动分配给函数的“第一个参数” 。所以,如果你使用函数(e),该对象将被分配给“e”,因为“e”是函数的唯一参数(definitly第一个!),那么你可以使用e.preventDefault来防止某些东西….
让我们试试下面的例子:
<p>Please click on the checkbox control.</p> <form> <label for="id-checkbox">Checkbox</label> <input type="checkbox" id="id-checkbox"/> </div> </form> <script> document.querySelector("#id-checkbox").addEventListener("click", function(e,v){ //var e=3; var v=5; var t=e+v; console.log(t); e.preventDefault(); }, false); </script>
结果将是: [object MouseEvent] 5 ,你将防止点击事件。
但如果您删除评论标志,如:
<script> document.querySelector("#id-checkbox").addEventListener("click", function(e,v){ var e=3; var v=5; var t=e+v; console.log(t); e.preventDefault(); }, false); </script>
您将得到: 8并且出现错误 :“Uncaught TypeError:e.preventDefault不是HTMLInputElement。(VM409:69)”的函数。
当然,这次点击事件不会被阻止,因为在函数中再次定义了“e”。
但是,如果您将代码更改为:
<script> document.querySelector("#id-checkbox").addEventListener("click", function(e,v){ var e=3; var v=5; var t=e+v; console.log(t); event.preventDefault(); }, false); </script>
每一件事情都会再次发生财产…你将得到8,点击事件被阻止 …
因此,“e”只是你的函数的一个参数,你需要在函数中使用“e”来接收“事件对象”,然后执行e.preventDefault()。 这也是为什么你可以把“e”改成任何没有被js保留的单词。
这是对当前事件对象的引用