jQuery插件-如何/在何处存储数据以及如何在方法之间共享?

jQuery插件-如何/在何处存储数据以及如何在方法之间共享?,jquery,jquery-plugins,Jquery,Jquery Plugins,鉴于这种结构: (function($) { var defaults = { dragDelay: 200, // tap/hold this long to activate dragging feedback: 'glow', // feedback to show drag mode (glow/pulsate) glowColor: '#fff' // color of the glow if feedbac

鉴于这种结构:

(function($) {

    var defaults = {
        dragDelay:    200, // tap/hold this long to activate dragging
        feedback:     'glow', // feedback to show drag mode (glow/pulsate)
        glowColor:    '#fff' // color of the glow if feedback==glow
    };

    var methods = {
        init:   function(options) {
            return this.each(function() {
                options = $.extend({}, defaults, options);
                var $this = $(this);

                $this.bind('click', methods.doSomething);
            });
        },

        doSomething:    function(e) {
            //...
        }
    };

    $.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.length > 0 ? arguments : [defaults]);
        else
            $.error("TypeError: Plugin 'myPlug' has no method '" + method +
                    "'");
    }
})(jQuery);

最好使用
$(this).data()
存储数据,还是使用
this.someVar=x
?另外,如何让init()方法与其他方法共享“选项”?

如果您正在创建一些可视化小部件,那么您可以创建自定义jQuery UI小部件(它有很好的技术):

但如果不是,那么最好使用
$(this).data(…)
来存储某个对象的个人数据


如何获取
init()
方法?您还可以使用
.data()
方法存储它。

如果您正在创建一些可视化小部件,那么您可以创建自定义的jQuery UI小部件(它有很好的技术):

但如果不是,那么最好使用
$(this).data(…)
来存储某个对象的个人数据

如何获取
init()
方法?您也可以使用
.data()
方法存储它