$('a').click(fuction(e){
if(e.target.targetNode == $(this)[0])
//do something
});
我仍然有点困惑,是谁通过e
?世界卫生组织真的正在通过该功能吗?
同样在插件代码中我看到如下内容:
Carousel.prototype.keydown = function (e) {
if (/input|textarea/i.test(e.target.tagName)) return
switch (e.which) {
case 37: this.prev(); break
case 39: this.next(); break
default: return
}
事件处理程序如下所示:
this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))
另一个例子是:
Carousel.prototype.pause = function (e) {
e || (this.paused = true)
if (this.$element.find('.next, .prev').length && $.support.transition) {
this.$element.trigger($.support.transition.end)
}
this.interval = clearInterval(this.interval)
return this
}
谁在这些功能中传递e
,它来自何处?我绝对没有任何线索,我一直在使用JS一段时间,但这仍然让我感到困惑。有人可以一劳永逸地清除这个疑问吗?
P.S。我在SO上看过this回答,但它没有回答我提出的问题。我理解e
在某种程度上是一个我们可以访问的具有不同属性的对象。
答案 0 :(得分:1)
您所指的功能称为回调功能。这些参数从调用它们的函数中传递(在你的情况下是.on()或.click())
更好地说明回调函数如何在这里工作是一个例子
function customFunction ( param1, callbackFunction ) {
var response = "default response";
if (param1 === "hello") {
response = "greeting";
}
callbackFunction(response);
}
customFunction("hello", function(e) {
console.log("this is " + e);
}); // > this is greeting
如您所见,您可以将函数作为参数传递给另一个函数。如果这样做,父函数可以在callbackFunction
内调用customFunction
时在内部调用此函数。
当我们调用customFunction
时,我们提供了两个参数(“hello”字符串和匿名函数),然后在customFunction
内部使用callbackFunction(在我们的情况下,我们传递的匿名函数)中进行处理,然后调用所有其他参数计算是使用我们在customFunction
内得到的参数完成的。