2014-06-12 47 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; 
}