我尝试扩展jQuery,但是当我调用myTest时,这将返回this.myTest.test()未定义...
有人可以告诉我为什么......
(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);
答案 0 :(得分:2)
您可以在嵌套函数this.myTest.test();
中调用x
。因此this
不会指向$.fn.myTest
对象。
您将在函数this.myTest.coba();
中遇到与b
相同的问题。
要解决此问题,您必须事先存储$.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(){
});
};
答案 1 :(得分: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(){
});
};