在JSON对象(jQuery插件)中设置自引用默认值

时间:2014-06-12 20:23:38

标签: jquery json plugins settings defaults

所以我正在尝试编写一个jQuery插件,我有三个值,我想设置一个默认值是一个简单的数值,如果用户想要可以设置其他值,但如果他们没有设置它们需要有一个默认值,无论第一个设置如何。

这是我想要的更长版本

config.duration = 350;
config.closeDuration = closeDuration OR duration;
config.openDuration = openDuration OR duration;

基本上,如果没有将默认设置恢复为持续时间值。即使该值已由用户设置。 (例如,持续时间= 500)

我只是想知道是否有精简这个?

jQuery.fn.lighthouse = function(settings) {
    var config = {
            containerSelector: 'a',
            childSelector: 'span',
            closeSelector: '.close',
            duration: 350,
            openDuration: config.duration,
            closeDuration: config.duration,
            secondaryDuration: 100,
            background: 'rgb(230, 230, 230)',
            backgroundOpacity: '0.7'
        };

    if (settings){
        config = $.extend(config, settings);
    }
}

1 个答案:

答案 0 :(得分:2)

通过将可选值设置为null,可以使用内联if语句来确定设置的值。以下是Karl-AndréGagnon和charlietfl答案的组合:

jQuery.fn.lighthouse = function(settings) {
    var config = {
        containerSelector: 'a',
        childSelector: 'span',
        closeSelector: '.close',
        duration: 350,
        openDuration: null,
        closeDuration: null,
        secondaryDuration: 100,
        background: 'rgb(230, 230, 230)',
        backgroundOpacity: '0.7'
    };

    if (settings){
        config = $.extend(config, settings);
    }

    config.openDuration = config.openDuration || config.duration;
    config.closeDuration = config.closeDuration || config.duration;
}