2011-10-21 2 views
3

다음을 작성하는 또 다른 간결한 방법은 무엇입니까? 기본적으로 그것은 condtion에 따라 2 버튼의 가시성을 토글합니다.자바 스크립트를 작성하는 또 다른 방법

$("#myCheckBox").click(function() { 
    if (window.console && window.console.log) 
     console.log("billing only checked? " + this.checked); 
    if (this.checked) { 
     $("#btnNext").hide(); 
     $("#btnFinish").show(); 
    } 
    else { 
     $("#btnNext").show(); 
     $("#btnFinish").hide(); 
    } 
}); 

보다 효율적인 방법을 찾고 있습니까?

+2

당신은 단지 그것을 쓰는 것이 더 힘들어 질 것입니다. 이것은 보통 "읽기가 더 힘듭니다"를 의미합니다. 그대로 놔둬. 괜찮아. –

+0

버튼 마무리가 숨겨져 있습니까? 체크 박스를 클릭하기 전에 이벤트? –

+0

가독성을 위해 최적화해야합니다. 왜 이것이 충분히 효율적이지 않다고 생각하십니까? – ObscureRobot

답변

15

당신은 요소가 표시하거나 숨길해야하는지 여부를 나타내는 인수 받아 .toggle 사용할 수 있습니다 : 가시성이 제대로 처음부터 설정

$("#btnNext").toggle(!this.checked); 
$("#btnFinish").toggle(this.checked); 

경우에도 통과 할 필요는 없습니다 인수 :

$("#btnNext, #btnFinish").toggle(); 

그래도 가독성에 관한 다른 사람과 동의합니다. .toggle 그 자체로는 여전히 이해할 수 있지만 .toggle(!this.checked)은 더 이해하기 어려워 질 수 있습니다.

그것은 100 % 효율적하지 않을 수 있습니다
+0

코드를 줄이면서 선명도를 높여주는 훌륭한 솔루션입니다. – ObscureRobot

0

- 당신이 영리한 원 또는 무언가를 사용하여이를 축소 할 수 있습니다 확신은 (편집 : 펠릭스 클링 이미 좋은 일이있다) - 그러나 다른 한편으로, 그것은 완벽하다 심지어이 프로젝트에 익숙하지 않은 사람을 위해서도이 방법을 읽을 수 있습니다.

내 경향은 그대로 두는 것이 좋습니다.

1

사용할 수 .toggle()을이에

if (this.checked) { 
    $("#btnNext").hide(); 
    $("#btnFinish").show(); 
} 
else { 
    $("#btnNext").show(); 
    $("#btnFinish").hide(); 
} 

:

$("#btnNext").toggle(!this.checked); 
$("#btnFinish").toggle(this.checked); 
1

당신은이를 줄일 수 있습니다올바른 showhide 상태로 시작한다고 가정하면 다음을 수행 할 수 있습니다.

$("#myCheckBox").click(function() { 
    if (window.console && window.console.log) { 
    console.log("billing only checked? " + this.checked); 
    } 
    $("#btnNext").toggle(); 
    $("#btnFinish").toggle(); 
} 
1
$("#myCheckBox").click(function() { 
    if (window.console && window.console.log) 
     console.log("billing only checked? " + this.checked); 
    $("#btnNext").toggle(!this.checked); 
    $("#btnFinish").toggle(this.checked); 
}); 
1

표시/숨기기 대신 .toggle()을 사용할 수 있습니다. 그러면 if/else 구문을 제거 할 수 있습니다.

관련 문제