jQuery插件覆盖选项

时间:2014-05-05 13:51:38

标签: jquery

不幸的是,我遇到了jQuery插件的问题。 我制作了一个小插件,以方便构建引导模态。

插件的选项如下所示:

defaults = {
    modalName: "",
    size: "md",
    title: "",
    body: "",
    buttons: {
        confirm: {
            class: 'btn btn-primary',
            value: 'Save'
        },
        cancel: {
            class: 'btn btn-default',
            value: 'Cancel'
        }
    }
};

但是我希望某些页面的确认按钮的值不同。我以为我可以这样做:

$( 'body' ).CreateModel ( {
    // Different settings
    buttons: {
        confirm: {
            value: 'Save & exit'
        }
    }
});

但不幸的是,这完全清除了默认对象,它只留下buttons.confirm.value。有什么方法可以解决这个问题吗?

提前致谢!

2 个答案:

答案 0 :(得分:2)

您没有向我们展示您如何使用defaults以及在参数中传递的对象的实现,但您可以使用$.extend解决此问题。

这样的事情:

$.fn.CreateModel = function(options) {
  options = $.extend({}, defaults, options);
  ....
};

答案 1 :(得分:1)

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

您必须将第this.options = $.extend( {}, defaults, options) ;行更改为:

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

请在此处查看示例:http://jsfiddle.net/n5BKk/