我正在重写一个插件,使每个主要部分变成method
as per this question和the jQuery documentation,到目前为止整个事情仍然有效。自定义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);
谢谢。我要恢复一两天,仔细看看这个。同时+1。 – Sparky