大家好,我只是在看carousel.js的代码,我有点困惑,现在我们要附加事件了,我经常看到如下代码:
$('a').click(fuction(e){
if(e.target.targetNode == $(this)[0])
//do something
});
我还是有些困惑,谁通过了
e
?谁真的在功能内部传递了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一段时间了,但这仍然让我感到困惑。有人真的可以一劳永逸地消除这个疑问吗?附言我看到了this这样的答案,但没有回答我所问的问题。我了解
e
在某种程度上是我们可以访问的具有不同v属性的对象。 最佳答案
您所引用的函数称为回调函数。这些参数从调用它们的函数中传递(在您的情况下是.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
中获得的参数。关于javascript - 了解carousel.js中e的用法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30437847/