JQuery переключение передано логическое ложь сначала имеет другой переход - PullRequest
1 голос
/ 31 марта 2011

Вот рабочий пример: http://jsfiddle.net/FzZwt/8/

Если я передам false методу toggle (), то сначала переход будет медленным. Если я передам true методу toggle (), сначала переход не будет установлен

Можно ли передать переход с логическим значением в 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);
});

Ответы [ 2 ]

1 голос
/ 31 марта 2011

Вы передаете строковые значения, когда она ожидает логическое значение или скорость анимации (число или одно из значений, которые переводятся в числа).нужно разыграть их как упоминает Томалак

Я сделал пару изменений;это то, что вы ищете?

$(".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 );
});

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

0 голосов
/ 30 сентября 2016

Согласно API , форма toggle(), где логическое значение, определяющее, показывать или скрывать, не принимает никаких других параметров.К сожалению, я думаю, что мы должны сделать что-то вроде:

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

Не очень элегантно, но я думаю, что это необходимо из-за перегрузки функции toggle.

...