有时我会看到带有如下参数的函数:
$('#my_div').bind("mouseover mouseenter", function (e) {
console.log(e);
var el = $("#" + e.type);
var n = el.text();
el.text(++n);
});
我不明白传递给函数的内容。如果它是类似的东西,我会理解它,(function(e){ .... }(parameter);但它不是。有人可以遮光吗
有时我会看到带有如下参数的函数:
$('#my_div').bind("mouseover mouseenter", function (e) {
console.log(e);
var el = $("#" + e.type);
var n = el.text();
el.text(++n);
});
我不明白传递给函数的内容。如果它是类似的东西,我会理解它,(function(e){ .... }(parameter);但它不是。有人可以遮光吗
jQuery 实际上会调用该函数,因为函数是 JavaScript 中的一等公民对象,所以它可以作为参数传递。e用于 jQuery 将提供的事件参数。
这种模式称为“回调”。
总是有一个参数被传递,只是你不是直接传递它的那个。浏览器是。
在这种情况下,您正在谈论事件处理程序。基本上发生的事情是,当事件被触发时,浏览器会将一个事件对象传递给事件侦听器的回调(您提供的回调)。
如果您想知道事件对象中的内容,请查看此 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”
该函数实际上还没有被调用。这告诉浏览器在“mouseover”或“mouseenter”事件发生时为您调用该函数。在这种情况下,当浏览器这样做时,它将传递一个事件对象,该对象将绑定到e函数一侧的局部变量。