2010-08-30 137 views
2

我儘量延長jQuery的,但是當我打電話MYTEST這將返回this.myTest.test()外部函數是不確定的...呼叫從內部功能的jQuery

有人可以告訴我爲什麼?

(function($) { 
    $.fn.myTest=function() { 

     var x=function() { 
      this.myTest.test(); 

      var b = function() { 
       this.myTest.coba(); 
      } 
     } 

     x(); 

     return this.each(function(){ 
     }); 
    }; 

    $.fn.myTest.test = function(){ 
     alert('test'); 
    }; 

    $.fn.myTest.coba = function(){ 
     alert('coba'); 
    }; 

    $.fn.myTest.iseng = function(){ 
     alert('iseng'); 
    }; 
})(jQuery); 

回答

2

您從嵌套函數x內調用this.myTest.test();。因此this將不會指向$.fn.myTest對象。

您將在功能b中遇到與this.myTest.coba();相同的問題。

爲了解決這個,你必須存儲$.fn.myTest對象的情況下事先對其進行訪問:

$.fn.myTest=function() { 

    var self = this; 
    var x=function() { 
     self.myTest.test(); 

     var b = function() { 
      self.myTest.coba(); 
     } 
    } 

    x(); 

    return this.each(function(){ 
    }); 
}; 
+0

感謝的很多......這項工作.. – comenk 2010-08-30 06:37:02

1

的這個X()函數內部是不是jQuery對象,反而是window,因爲據我所知。這裏有您需要什麼...

$.fn.myTest = function() { 
    var that = this; 
    var x=function() { 
     that.myTest.test(); 

     var b = function() { 
      that.myTest.coba(); 
     } 
    } 

    x(); 

    return this.each(function(){ 
    }); 
}; 
+0

感謝的......我現在get'it .. – comenk 2010-08-30 07:08:39