jQuery插件创作范围

时间:2012-03-29 17:28:37

标签: javascript jquery jquery-plugins

如果我想在我正在制作的jQuery插件上有一个可公开访问的函数,这是正确的方法吗?

(function($) {
    $.fn.myPlug = function(options) {
        // Do this...
        this.hello = function() {
            return 1;
        };
    }
})(jQuery);

var foo = $("div").myPlug();

// then do this...
foo.hello();

1 个答案:

答案 0 :(得分:1)

您应该构建插件,以便可以将方法名称作为参数传递给插件。这是jQuery plugin authoring guide

推荐的
(function($) {

    var methods = {
        init: function(options) {

        },
        hello: function () {
            return 1;
        }
    };

    $.fn.myPlug = 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 on jQuery.myPlug');
        }
    };

})(jQuery);

用法如下:

$("div").myPlug({ ... });
$("div").myPlug("hello"); // returns 1