gpt4 book ai didi

javascript - 扩展默认值,选项覆盖一切

转载 作者:行者123 更新时间:2023-11-29 21:59:53 24 4
gpt4 key购买 nike

在我的插件中,我想提供完整的 css 控件。但是必须声明一些初始值。为了让用户自定义这个初始值,我调用了一个 $.extend 变量,我在其中传递了所有初始 css。

当我尝试覆盖该对象的一个​​或多个部分时,它会覆盖所有内容,而不仅仅是选择的内容。为什么?

我在这里做了 fiddle http://jsfiddle.net/Hfk79/更清楚:

假设这是我的插件:

$.fn.myPlugin = function( options ) {
var defaults = $.extend({
pCSS : {
color: 'red',
margin: '1em'
}
}, options );

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

return this.click(function() {
$( this ).css( settings.pCSS );
});
}

用户现在可以覆盖默认选项。让我们假装我是一个讨厌红色的用户,只希望它是蓝色的,我对其他属性感到满意。我会调用传递此选项的函数:

$( document ).ready(function() {
$( '.plugin' ).myPlugin({
pCSS: {
color: 'blue'
}
});
});

然而,此代码将覆盖所有内容,而不仅仅是颜色!

我哪里做错了?

最佳答案

删除第一个 extend 并摆脱 pCSS 内部对象有助于:

$.fn.myPlugin = function (options) {
var defaults = {
color: 'red',
margin: '1em'
};

var settings = $.extend(true, defaults, options);

return this.click(function () {
$(this).css(settings.pCSS);
});
}

$(document).ready(function () {
$('.plugin').myPlugin({
color: 'blue'
});
});

DEMO

关于javascript - 扩展默认值,选项覆盖一切,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24412403/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com