这个问题困扰了我一段时间,这是工作的一个我找到了。适用于我。英语不是我的第一语言,所以如果我没有清楚解释,请原谅我。
这是我之前为切换开关创建的一个插件。
在init
方法中,我将插件选项保存到jQuery.data()
,然后稍后我可以用新选项调用simpleSwitchUpdate
函数。如您所见,我检索为元素保存的旧选项,并致电$.extend
撰写新选项,并拨打$.fn.simpleSwitch
和newOptions
。我一直在使用这种模式创建可更新的插件一段时间,它对我来说工作得很好。
/**
* A plugin for switch
*/
(function($) {
var Switch = {
init : function(options, elm) {
var self = this;
self.$elm = $(elm);
self.$elm.empty();
self.options = $.extend({}, $.fn.simpleSwitch.options, options);
self.$elm.data("switchData", self.options);
self.$elm.append(self.createSwitch());
},
createSwitch : function() {
//logic to create your plugin
}
};
$.fn.simpleSwitch = function(options) {
return this.each(function() {
var simpleSwitch = Object.create(Switch);
simpleSwitch.init(options, this);
});
};
$.fn.simpleSwitchUpdate = function(options) {
var switchData = this.data("switchData");
var newOptions;
if (switchData) {
newOptions = $.extend({}, switchData, options);
} else {
newOptions = $.extend({}, $.fn.simpleSwitch.options, options);
}
return this.simpleSwitch(newOptions);
};
$.fn.simpleSwitch.options = {
width : 25,
height : 15,
on : true,
onDirection : "right",
easing : "easeOutQuint",
roundBorder : true,
onColor : "orange",
offColor : "lightgray",
onToggle : null
};
})(jQuery);
JSFIDDLE LINK
通常情况下,插件将有这样的一种方式。这是哪个插件,还是你创建的东西? – 2011-05-15 01:38:12
这是我创建的一个。好吧,有点。我正在创建一个。 我只是抓住了我能找到的第一个简单例子。 – coffeemonitor 2011-05-15 01:45:36
它的插件。你可以随时调整你想要的。 – Jeff 2011-05-15 02:15:35