0
我經常使用下面的設計模式來創建jQuery插件。我在插件中指定默認值,並允許用戶在初始化插件時更改它們。通常情況下,我的default
對象只包含字符串屬性,而不是對象,但是這次我希望將其中一個默認屬性作爲對象(在我的示例中爲default_obj_1
)。在腳本的底部,您會看到我試圖通過傳遞插件{default_value_2: 666, default_obj_1.default_prop_3: 434}
來更改其中一個屬性,但它無效的JavaScript和錯誤輸出。我也嘗試通過它{default_value_2: 666, default_obj_1: {default_prop_3: 434}
但它似乎覆蓋了其他值應該保持。將配置對象傳遞給jQuery插件
如何更新jQuery插件中的默認值之一?
(function($){
var defaults = {
default_value_1 : 123,
default_value_2 : 321,
default_value_3 : 111,
default_obj_1 : {
default_prop_1 : 444,
default_prop_2 : 534,
default_prop_3 : 231
}
};
var methods = {
init : function (options) {
var settings = $.extend({}, defaults, options);
return this.each(function() {
//Do something using settings
});
}
};
$.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));
$(function(){
var myPlugin=$('#elem').myPlugin({default_value_2:666,default_obj_1.default_prop_3:434});
var myPlugin=$('#elem').myPlugin({default_value_2:666,default_obj_1:{default_prop_3:434} });
});
啊哈!感謝Mathlentics。我需要運行,但是當我回來並選擇這個作爲答案時會進行測試(只要它有效:) – user1032531