了解carasoul.js中e的用法

时间:2015-05-25 11:57:51

标签: javascript jquery

嘿伙计们,我刚刚浏览了carousel.js的代码,我有点困惑,现在我们来附加事件我看到代码如下::

$('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在某种程度上是一个我们可以访问的具有不同属性的对象。

1 个答案:

答案 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内得到的参数完成的。