2014-06-12 5 views
0

jQuery 플러그인을 작성하려고하는데 기본 값을 설정하려는 세 개의 값이있는 경우 다른 값은 설정할 수있는 간단한 숫자 값입니다. 사용자가 원하지만, 설정하지 않으면 첫 x 째 값이 설정된 값의 기본값을 가져야합니다.JSON 객체 (jQuery Plugin)에서 자체 참조 기본값 설정

여기에 나는 그들이이 기간 값이 무엇이든 다시 기본값으로 설정되어 있지 않습니다 기본적으로 경우

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

당신은 설정 객체를 확인하지 않고서는 실제로 할 수없고, 설정 객체를 지정하지 않고 바로 그 두 속성을 정의하면 안된다. – 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; 
}