![](/img/trans.png)
[英]Is this the right way to “override” a jQuery plugin (to provide default settings)?
[英]Override settings of jQuery plugin?
我已經構建了一個這樣的插件:
;(function ($,window,undefined){
...
...default settings area...
...content area...
...
})(jQuery,window);
但是這個插件可以有很多(!)配置。(文件配置)
因此每個配置文件都可以在js文件中。 例如:
mySettings.js :
var mySetings= {a:1,b:2.....}
那問題出在哪里:
必須在插件之前加載設置文件。 (因此插件將能夠在覆蓋設置區域中讀取mySettings
)
與插件本身通信mySettings
的唯一方法是通過window
對象
題 :
配置插件的正確方法是什么,該插件可以通過js文件設置多個(!)設置。
因為我沒有代碼示例可以使用,所以我會給你一些通用的解決方案。
JS
//File 1.js
window.settings = window.settings || [];
window.settings.push({a:'11'});
//File2.js
window.settings = window.settings || [];
window.settings.push({b:'22', c:'33'});
//File3.js
window.settings = window.settings || [];
window.settings.push({b:'222'});
//Main.js File
;(function ($,window,undefined){
var plugin = function(settings){
var defConfig = {
a: '1',
b: '2',
c: '3'
};
var len = settings.length, i;
if(len){
for(i = 0; i < len; i++){
defConfig = $.extend(defConfig, settings[i]);
}
}else{
defConfig = $.extend(defConfig, settings);
}
alert(JSON.stringify(defConfig));
};
var instance = new plugin(window.settings || []);
})(jQuery,window);
//Main.js File
;(function ($,window,undefined){
var plugin = function(){
var defConfig = {
a: '1',
b: '2',
c: '3'
};
this.overrideSettings = function(settings){
var len = settings.length, i;
if(len){
for(i = 0; i < len; i++){
defConfig = $.extend(defConfig, settings[i]);
}
}else{
defConfig = $.extend(defConfig, settings);
}
alert(JSON.stringify(defConfig));
}
};
window.instance = new plugin();
})(jQuery,window);
//File 1.js
window.instance.overrideSettings({d:'93'});
//File2.js
window.instance.overrideSettings({b:'22222'});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.