在Javascript / jQuery中,(e)是什么意思?

时间:2012-04-25 20:39:41

标签: javascript jquery function parameters parameter-passing

我是JavaScript / jQuery的新手,我一直在学习如何创建函数。许多功能都出现了(e)括号内。让我告诉你我的意思:

$(this).click(function(e) {
    // does something
});

看起来该函数似乎甚至没有使用(e)的值,为什么它经常出现?

9 个答案:

答案 0 :(得分:91)

eevent对象的short var引用,它将传递给事件处理程序。

事件对象本质上有很多有趣的方法和属性,可以在事件处理程序中使用。

在您发布的示例中,是一个MouseEvent

的点击处理程序
$(<element selector>).click(function(e) {
    // does something
    alert(e.type); //will return you click
}

DEMO - 鼠标事件DEMO使用e.whiche.type

一些有用的参考资料:

http://api.jquery.com/category/events/

http://www.quirksmode.org/js/events_properties.html

http://www.javascriptkit.com/jsref/event.shtml

http://www.quirksmode.org/dom/events/index.html

http://www.w3.org/TR/DOM-Level-3-Events/#event-types-list

答案 1 :(得分:36)

  

免责声明:这是对这个特定帖子的一个非常晚的回应,但正如我一直在阅读对这个问题的各种回答,让我感到震惊的是,大多数答案都使用的术语只能是经验丰富的程序员理解。这个答案试图在考虑新手的情况下解决原始问题。

简介

小的'(e)'事实上是Javascript中更广泛范围的一部分,称为事件处理函数。每个事件处理函数都接收一个事件对象。出于本讨论的目的,将对象视为包含一堆属性(变量)和方法(函数)的“东西”,就像其他对象一样。语言。句柄,(e)内部的' e '就像一个允许你与对象交互的变量(我使用术语变量非常松散)。

考虑以下jQuery示例:

$("#someLink").on("click", function(e){ // My preferred method
    e.preventDefault();
});

$("#someLink").click(function(e){ // Some use this method too
    e.preventDefault();
});

解释

  • “#someLink”是您的元素选择器(HTML标记将触发此选项)。
  • “click”是一个事件(单击所选元素时)。
  • “function(e)”是事件处理函数(on event,object is created)。
  • “e”是对象处理程序(可以访问对象)。
  • “preventDefault()”是对象提供的方法(函数)。

发生了什么事?
当用户点击id “#someLink”(可能是锚标记)的元素时,请调用匿名函数“function(e)”,然后分配结果对象为处理程序,“e”。现在接受该处理程序并调用其中一个方法“e.preventDefault()”,这将阻止浏览器对该元素执行默认操作。

注意: 句柄几乎可以任意命名(即' function(billybob)')。 'e'代表'事件',这似乎是这类函数的标准。

虽然'e.preventDefault()'可能是事件处理程序的最常见用法,但对象本身包含许多可通过事件处理程序访问的属性和方法。

有关此主题的一些非常好的信息可以在jQuery的学习网站http://learn.jquery.com找到。请特别注意Using jQuery CoreEvents部分。

答案 2 :(得分:28)

e没有任何特殊含义。当参数为e时,它只是使用event作为函数参数名称的约定。

可以是

$(this).click(function(loremipsumdolorsitamet) {
    // does something
}

答案 3 :(得分:7)

在该示例中,e只是该函数的一个参数,但它是通过它传入的event对象。

答案 4 :(得分:7)

e参数是事件对象的简称。例如,您可能希望为取消默认操作的锚点创建代码。要做到这一点,你会写一些类似的东西:

$('a').click(function(e) {
    e.preventDefault();
}

这意味着点击<a>代码时,请阻止点击事件的默认操作。

虽然您可能经常看到它,但即使您已将其指定为参数,也不必在函数中使用它。

答案 5 :(得分:4)

e的jQuery event缩写中,是当前的事件对象。它通常作为要触发的事件函数的参数传递。

演示:jQuery Events

在演示中,我使用了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);
    }); 

同样的事情!

程序员很懒,我们使用了很多简写,部分是减少了我们的工作,部分是有助于提高可读性。理解这将有助于您理解编写代码的心态。

答案 6 :(得分:4)

今天我刚写了一篇关于&#34的文章;为什么我们在e.preventDefault()中使用“e”这样的字母?&#34;而且我认为我的答案会有所帮助......

首先,让我们看一下addEventListener

的语法

通常会是: target.addEventListener(type,listener [,useCapture]);

addEventlistener参数的定义是:

  

type :表示要侦听的事件类型的字符串。

     

侦听器:在指定类型的事件时接收通知(实现Event接口的对象)的对象   发生。这必须是实现EventListener的对象   接口或JavaScript函数。

(来自MDN)

但我认为应该注意一件事: 当您使用Javascript函数作为侦听器时,实现Event接口(对象事件)的对象将自动分配给函数的&#34;第一个参数&#34; 。所以,如果你使用函数(e),该对象将被分配给&#34; e&#34;因为&#34; e&#34;是函数的唯一参数(绝对是第一个参数!),那么你可以使用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 错误:&#34;未捕获的TypeError:e.preventDefault不是函数     在HTMLInputElement。 (VM409:69)。&#34;

当然,这次不会阻止点击事件。因为&#34; e&#34;在函数中再次定义。

但是,如果您将代码更改为:

<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并阻止点击事件 ......

因此,&#34; e&#34;只是你的功能的一个参数,你需要一个&#34; e&#34;在你的function()中接收&#34;事件对象&#34;然后执行e.preventDefault()。这也是你可以改变&#34; e&#34;任何未被js保留的词。

答案 7 :(得分:2)

它是对当前事件对象的引用

答案 8 :(得分:-1)

$(this).click(function(e) {
    // does something
});

参考上面的代码
$(this)是作为某些变量的元素。
click是需要执行的事件。
参数e会自动从js传递到您的函数,该函数保存$(this)值的值,并且可以在您的代码中进一步用于执行某些操作。