在jQuery插件中添加实例方法

时间:2010-10-01 22:22:33

标签: jquery jquery-plugins

我正在创建自己的jQuery插件。这是我到目前为止编写的代码:

(function ($) {
    $.fn.customPlugin.defaults = {
        x: 'test',
        y: 'foo'
    };
    $.fn.customPlugin = function (options) {
        var opt = $.extend({}, $.fn.customPlugin.defaults, options);
        return this.each(function () {
            var current = $(this);
            //I want to add instance methods

        });
    };
})(jQuery);

接下来我想在这个插件中添加实例方法。现在我有两种方法可以做到这一点

1

(function ($) {
    $.fn.customPlugin.defaults = {
        x: 'test',
        y: 'foo'
    };
    $.fn.customPlugin = function (options) {
        var opt = $.extend({}, $.fn.customPlugin.defaults, options);
        this.each(function () {
            var current = $(this);
            function method1() {
            //opt will be used here
            }
            function method2() {
                //opt will be used here
            }
        });
    };
})(jQuery);

2

(function ($) {
    $.fn.customPlugin.defaults = {
        x: 'test',
        y: 'foo'
    };
    $.fn.customPlugin = function (options) {
        var opt = $.extend({}, $.fn.customPlugin.defaults, options);
        this.each(function () {
            var current = $(this);
            $.fn.customPlugin.method1(opt);
            $.fn.customPlugin.method2(opt);
        });
    };
    $.fn.customPlugin.method1(opt)
    {
        //opt will be used here
    };
    $.fn.customPlugin.method2(opt)
    {
        //opt will be used here
    };
})(jQuery);

您能指导我应该使用哪种方法,或者您是否可以建议我采用比这更好的方法?

1 个答案:

答案 0 :(得分:0)

jQuery不鼓励使用第二种方法,因为它“使$ .fn命名空间变得混乱”,请按照推荐的方式检查documentation here