0

请耐心等待几秒钟。js初学者。谢谢。我正在玩样板 https://github.com/jquery-boilerplate/jquery-boilerplate/blob/master/src/jquery.boilerplate.js

在其中我添加了 2 个新功能

   init: function () {

      this.mynewFunction2();
   },

    mynewFunction1: function (){

      console.log('ok');
    },

    mynewFunction2: function (){

       $('.link').click(function(){
             this.mynewFunction1();
       });
    }

您可能已经看到了问题,但问题是如何将 mynewFunction1 传递给 jquery 对象?我确实找到了一些帖子,他们说我需要分配我的新函数才能在 jquery 对象中被调用,但我有点迷路了。因此,如果您有空闲时间,请根据我上面的代码发布一个示例。谢谢!

4

2 回答 2

2
 mynewFunction2: function (){
      var self = this;
       $('.link').click(function(){
             self.mynewFunction1();
       });
    }
于 2013-09-21T14:22:13.097 回答
1

一个新函数会创建一个新作用域,而后者又会创建一个新作用域this

mynewFunction2: function (){
   $('.link').click(function(){
         this.style.color = 'red';
         // this inside the event handler is the clicked element
   });
}

您可以删除匿名函数并直接传递它:

mynewFunction2: function (){
   $('.link').click(this.mynewFunction1);
}

或者如果您必须传递参数:

mynewFunction2: function (){
   var that = this; // references the parent object
   $('.link').click(function() {
      that.mynewFunction1(this); // passes the clicked element
   });
}
于 2013-09-21T14:32:44.180 回答