2011-03-31 3 views
1

을 갖는 동작 예이다 전달 전환이 설정되지 않았습니다.jQuery를 토글 제 거짓 부울 여기서 다른 전이

toggle()에 부울이있는 전환을 전달할 수 있습니까?

예 :

var show = true; 
$('#elem').toggle(show, 'slow'); 

HTML

<div data-role="page"> 
<div data-role="fieldcontain"> 
<fieldset data-role="controlgroup" data-type="horizontal"> 
<div>Boolean Test 1 - Passing TRUE first</div> 
<input type="radio" name="boolean" id="true" value="true" /> 
<label for="true">Yes</label>     
<input type="radio" name="boolean" id="false" value="false" checked="checked"/> 
<label for="false">No</label> 
<div class="hidden" name="hidden_div" id="hidden_div">Show Me!!!</div> 
</fieldset> 
</div> 

<div data-role="fieldcontain"> 
<fieldset data-role="controlgroup" data-type="horizontal"> 
<div>Boolean Test 2 - Passing FALSE First</div> 
<input type="radio" name="boolean2" id="true" value="true" /> 
<label for="true">Yes</label>     
<input type="radio" name="boolean2" id="false" value="false" checked="checked"/> 
<label for="false">No</label> 
<div class="hidden" name="hidden_div2" id="hidden_div2">Show Me!!!</div> 
</fieldset> 
</div> 

</div> 

JS

$(".hidden").hide(); 

$("[name=boolean]").change(function() { 
    var show = $('input[name=boolean]:checked').val() == "true"; 
    alert('Passing first: '+show); 
    $("#hidden_div").toggle(show); 
}); 

$("[name=boolean2]").change(function() { 
    var show = $(this).val(); 
    alert('Passing First: '+show); 
    $("#hidden_div2").toggle(show); 
}); 
+1

'var show = $ (this) .val();'이것은 문자열이며 부울이 아닙니다. 던져. –

답변

1

이 예상 할 때 문자열 값을 전달하는 부울 또는 애니메이션 속도 중 하나를 (숫자 중 하나 또는 숫자로 변환되는 값 중 하나). 당신이 논리 값을 전달하려는 경우

, 당신은 Tomalak 내가 변화의 몇 가지를 만들어

언급로 캐스팅해야합니다; 이게 니가 찾고있는거야? API 부울을 표시하거나 감추기 다른 매개 변수를 고려하지 않는지를 판정 toggle() 형태에 따르면

http://jsfiddle.net/FzZwt/11/

0

$(".hidden").hide(); 

$("[name=boolean]").change(function() { 
    var show = ($('input[name=boolean]:checked').val() == 'true') ? true : false; 
    $("#hidden_div").toggle(show); 
}); 

$("[name=boolean2]").change(function() { 
    var show = ($(this).val() == "true") ? true : false ; 
    $("#hidden_div2").toggle(show); 
}); 
. 그래서 불행하게도, 우리가 같은 것을 할 생각 :

if (myBoolean) { 
    $myElement.show(MY_DURATION_CONSTANT, myEasing); 
} else { 
    $myElement.hide(MY_DURATION_CONSTANT, myEasing); 
} 

매우 우아하지,하지만이 때문에 toggle 기능은 오버로드 방식이 필요하다고 생각합니다.