jQuery插件覆盖选项

jQuery插件覆盖选项,jquery,Jquery,不幸的是,我遇到了jQuery插件的一个问题。 我制作了一个小插件来帮助构建引导模式 插件的选项如下所示: defaults = { modalName: "", size: "md", title: "", body: "", buttons: { confirm: { class: 'btn btn-primary', value: 'Save' }, ca

不幸的是,我遇到了jQuery插件的一个问题。 我制作了一个小插件来帮助构建引导模式

插件的选项如下所示:

defaults = {
    modalName: "",
    size: "md",
    title: "",
    body: "",
    buttons: {
        confirm: {
            class: 'btn btn-primary',
            value: 'Save'
        },
        cancel: {
            class: 'btn btn-default',
            value: 'Cancel'
        }
    }
};
$.fn.CreateModel = function(options) {
  options = $.extend({}, defaults, options);
  ....
};
但我希望确认按钮的值在某些页面上有所不同。我想我可以这么做:

$( 'body' ).CreateModel ( {
    // Different settings
    buttons: {
        confirm: {
            value: 'Save & exit'
        }
    }
});
但不幸的是,这完全清除了默认对象,只留下
按钮.confirm.value
。我有办法解决这个问题吗


提前谢谢

您还没有向我们展示如何分别使用
默认值
和传入参数的对象的实现,但是您可以使用

大概是这样的:

defaults = {
    modalName: "",
    size: "md",
    title: "",
    body: "",
    buttons: {
        confirm: {
            class: 'btn btn-primary',
            value: 'Save'
        },
        cancel: {
            class: 'btn btn-default',
            value: 'Cancel'
        }
    }
};
$.fn.CreateModel = function(options) {
  options = $.extend({}, defaults, options);
  ....
};

使用jQuery函数
.extend
,您可以将true作为第一个允许深度合并的参数传递

您必须更改行
this.options=$.extend({},默认值,选项)至:

this.options = $.extend(true, {}, defaults, options) ;

请参见此处的示例:

对此表示抱歉。我正在使用这个模板:非常感谢!这就成功了。将在4分钟内将此标记为答案;)