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

最佳答案

您从嵌套函数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(){
    });
};

关于jquery - 从jQuery中的内部函数调用外部函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3598163/

10-12 13:42