3

我正在寻找一种在 jquery 函数中调用方法的方法。

示例:在上面的代码中,如何method()从全局范围调用该方法?

(function( $ ) {

    $.fn.test = function() {

        var method = function() {
            alert('test succeeded!');
        };

    }

})( jQuery );

我尝试使用以下代码:

$(document).ready(function() {

    $(document).test.method(); // undefined

});

但这无济于事。

小提琴:http: //jsfiddle.net/kB7mc/

4

1 回答 1

4

您的方法test仅在函数内部可用,您不能在范围外访问它。相反,您可以这样做。同样在调用它时,请记住将方法调用()用于testie$(document).test().method();而不是$(document).test.method();

(function( $ ) {

    $.fn.test = function() {
         var method = function() {
            alert('test succeeded!');
        };

         return {method:method};
    }

})( jQuery );

$(document).ready(function() {
    $(document).test().method(); // undefined
});

小提琴

使用 Jquery 插件模式。

(function ($) {
    var methods = {

        method : function () {
            alert('test succeeded!');
            return this; //return element for chaining
        },
         method2 : function () {
            alert('test2 succeeded!');
             return this;
        }
    };

    $.fn.test = function (method) {
        if (methods[method]) {
            return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
        } else if (typeof method === 'object' || !method) {
            return methods.init.apply(this, arguments);
        } else {
            $.error('Method ' + method + ' does not exist');
        }
    }

})(jQuery);

$(document).ready(function () {
    $(document).test('method'); 
    $(document).test('method2'); 

});

小提琴

于 2013-06-24T15:42:13.017 回答