有时我会看到带有这样参数的函数:
$('#my_div').bind("mouseover mouseenter", function (e) {
console.log(e);
var el = $("#" + e.type);
var n = el.text();
el.text(++n);
});
我没有得到传递给函数的内容。如果它像(function(e){ .... }(parameter);
那样我会理解,但事实并非如此。有人可以遮挡一些光线
答案 0 :(得分:3)
jQuery实际上会调用该函数,因为函数是JavaScript中的第一类公民对象,因此它可以作为参数传递。 e
用于jQuery将提供的事件参数。
此模式称为“回调”。
答案 1 :(得分: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&#34 ;
答案 2 :(得分:1)
实际上还没有调用该函数。这告诉浏览器在“鼠标悬停”或“鼠标中心”事件发生时为您调用该功能。在这种情况下,当浏览器执行此操作时,它将传递一个事件对象,该事件对象将绑定到函数侧面的局部变量e
。