簡體   English   中英

覆蓋jQuery插件的設置?

[英]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文件設置多個(!)設置。

因為我沒有代碼示例可以使用,所以我會給你一些通用的解決方案。

  1. 收集數組中的設置對象,並在覆蓋設置區域內迭代它們。
  2. 通過窗口公開您的插件並直接在那里附加設置。

例1

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);

例2

//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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM