在jQuery中从内部函数调用外部函数

时间:2010-08-30 05:53:00

标签: jquery

我尝试扩展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);

2 个答案:

答案 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(){
    });
};