1

有一个关于在另一个原型函数中调用一个原型函数的问题。

例如,假设我有一个带有两个原型功能的基本滑块。

function Slider() {

}

Slider.prototype.transition = function() {

}

Slider.prototype.setTargets = function() {

}

在转换函数中调用 setTargets 函数的正确方法是什么,如下所示:

Slider.prototype.transition = function() {
   this.target.fadeOut('normal', function() {
      // call setTargets?  
      this.setTargets(); // errors when i do this
   });
}

谢谢您的帮助

4

2 回答 2

1

如果this.target是 jQuery 对象,则回调fadeOutthis作为 DOMNode 调用。

改为这样做:

Slider.prototype.transition = function() {
   var me = this;
   this.target.fadeOut('normal', function() {
      me.setTargets(); // <-- See me
   });
}

我为所有对. 我从来没有使用过 DomNodes 等,这对我来说很有意义。that methisthat me

有关这一点的进一步观点,请参阅评论。

编辑:

Acually我以前me没有that- 不知道我在想什么??!


并发表评论:

Slider.prototype.transition = function() {
   var me = this;
   this.target.fadeOut('normal', function() {
      var domThis = this;
      me.setTargets(); // <-- See me
      setTimeout(function() {
          // Use domThis [Dom Node]
      }, 123);
   });
}

或者:

您可以创建一个 jQuery 对象:

      var $this = $(this);
      me.setTargets(); // <-- See me
      setTimeout(function() {
          // Use $this [jQuery Object]
      }, 123);

如果你需要这个的 jQuery 对象你可以参考:me.target

      me.setTargets(); // <-- See me
      setTimeout(function() {
          // Use me.target [jQuery Object]
      }, 123);
于 2012-07-20T17:34:28.373 回答
0

fadeOut函数不会在您的slider对象的上下文中调用。

Slider.prototype.transition = function() {
    var slider = this;
    this.target.fadeOut('normal', function() {
        // call setTargets?  
        slider.setTargets(); // should work now.
    });
}
于 2012-07-20T17:35:54.400 回答