2

有时我会看到带有如下参数的函数:

$('#my_div').bind("mouseover mouseenter", function (e) {
    console.log(e);
    var el = $("#" + e.type);
    var n = el.text();

    el.text(++n);
});

我不明白传递给函数的内容。如果它是类似的东西,我会理解它,(function(e){ .... }(parameter);但它不是。有人可以遮光吗

4

3 回答 3

3

jQuery 实际上会调用该函数,因为函数是 JavaScript 中的一等公民对象,所以它可以作为参数传递。e用于 jQuery 将提供的事件参数。

这种模式称为“回调”。

于 2013-10-13T01:29:05.650 回答
1

总是有一个参数被传递,只是你不是直接传递它的那个。浏览器是。

在这种情况下,您正在谈论事件处理程序。基本上发生的事情是,当事件被触发时,浏览器会将一个事件对象传递给事件侦听器的回调(您提供的回调)。

如果您想知道事件对象中的内容,请查看此 mozilla 文档页面https://developer.mozilla.org/en-US/docs/Web/API/Event

如果你想知道浏览器如何处理事件对象的整个传递,这里的规范:http ://www.w3.org/html/wg/drafts/html/master/webappapis.html#the-event-handler-processing -algorithm看下 4)它说“按如下方式处理事件 E”

于 2013-10-13T01:38:58.303 回答
1

该函数实际上还没有被调用。这告诉浏览器在“mouseover”或“mouseenter”事件发生时为您调用该函数。在这种情况下,当浏览器这样做时,它将传递一个事件对象,该对象将绑定到e函数一侧的局部变量。

于 2013-10-13T01:43:59.150 回答