Javascript 覆盖jQuery插件的设置?
我构建了一个如下插件:Javascript 覆盖jQuery插件的设置?,javascript,jquery,Javascript,Jquery,我构建了一个如下插件: ;(function ($,window,undefined){ ... ...default settings area... ...content area... ... })(jQuery,window); 但是这个插件可以有很多(!)配置 因此,每个配置文件都可以位于js文件中。例如: mySettings.js: var myseetings={a:1,b:2….} 那么问题在哪里呢 必须在加载插件之前加载设置文件。(因此插件将能够读取覆
;(function ($,window,undefined){
...
...default settings area...
...content area...
...
})(jQuery,window);
但是这个插件可以有很多(!)配置
因此,每个配置文件都可以位于js文件中。例如:
mySettings.js:
var myseetings={a:1,b:2….}
那么问题在哪里呢
- 必须在加载插件之前加载设置文件。(因此插件将能够读取覆盖设置区域中的
)mySettings
- 与插件本身进行
通信的唯一方法是通过mySettings
对象窗口
通过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);
//文件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文件
;(函数($,窗口,未定义){
var plugin=函数(设置){
变量defConfig={
a:‘1’,
b:‘2’,
c:'3'
};
var len=设置。长度,i;
如果(len){
对于(i=0;i
//Main.js文件
;(函数($,窗口,未定义){
var plugin=function(){
变量defConfig={
a:‘1’,
b:‘2’,
c:'3'
};
this.overrideSettings=函数(设置){
var len=设置。长度,i;
如果(len){
对于(i=0;i
//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'});