method
我正在重写一个插件,以便根据这个问题和jQuery 文档将每个主要部分变成一个,到目前为止,整个事情仍然有效。
插件初始化为:
$('#mySelector').myPlugin({
// want to keep initial options
option1: true,
option2: 'right'
// etc.
});
然后稍后,我想使用一个refresh
方法:
$('#mySelector').myPlugin('refresh');
基本上,我需要“刷新”来完成这个插件中的所有事情,除了重新应用 HTML DOM 修改(同时保留所有原始初始化选项)。
我似乎无法弄清楚。我不能只使用methods.binders(var1, var2);
,因为我也需要获取变量。但是,init()
需要methods.html()
在它第一次初始化时。当我做我的时,我怎么能跳过那一部分refresh
?
也许这很简单,但我现在很头疼。
(function ($) {
var methods = {
defaults : {
option1: false,
option2: 'left'
// etc.
},
settings : {},
init : function(options) {
methods.settings = $.extend({}, methods.defaults, options);
$(this).each(function() {
if ($(this).is('[type=radio]')) {
var var1 = $(this);
var var2 = $('.somethingelse');
// etc.
methods.html(var1, var2);
methods.binders(var1, var2);
};
});
},
refresh : function () {
// no idea??
},
html : function(var1, var2) {
// various HTML DOM manipulations
},
binders : function(var1, var2) {
// binding various events, hover, click, etc.
// assigns classes
}
};
$.fn.myPlugin = 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.myPlugin' );
}
};
})(jQuery);