2014-06-12 110 views
0

所以我想写一个jQuery插件,我有三个值,我想设置默认值为一个是简单的数值,其他可以设置if用户需要,但是如果他们没有设置它们,他们需要设置第一个设置的默认值。在JSON对象中设置自引用默认值(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); 
    } 
} 
+0

我真的不明白你想要什么。你能澄清吗? –

+0

@ Karl-AndréGagnon基本上我想设置一个使用另一个默认设置值的特定设置,如果某个设置没有被用户定义。 A =某个值; 如果B未由用户设置,则B = A; –

+0

如果没有检查设置对象,或者在定义没有它们的“config”后立即定义这两个属性,您无法真正做到这一点 – charlietfl

回答

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; 
}