jQuery .toggle (showOrHide): вопрос реализации - PullRequest
0 голосов
/ 22 марта 2011

У меня есть кнопка, чтобы переключиться, является ли ссылочный div видимым или нет.Первоначально я использовал код:

$('#search-options-btn').click(function() {
    if ($('#search-options').is('.hidden')) {
        $('#search-options').removeClass('hidden');
    } else {
        $('#search-options').addClass('hidden');
    }
});

Однако, пытаясь найти более чистый код, я наткнулся на метод jQuery toggle(), который согласно API имеет реализацию метода

.toggle( showOrHide )    
showOrHide: A Boolean indicating whether to show or hide the elements.

Это описание заставляет меня поверить, что это сокращенный метод реализации для отображения или скрытия путем передачи идентификатора ...?showOrHide в метод toggle().

Конечно, попытка этого:

$('#search-options-btn').click(function() {
    $('#search-options').toggle(showOrHide);
});

приводит к ошибке в моей консоли firebug:

showOrHide is not defined
[Break On This Error] $('#search-options').toggle(showOrHide); 

I 'мы также пытались определить showOrHide как логическое значение, инициализированное false;ошибка исчезает, но проблема не устранена.

Согласно онлайн-API jQuery, это должно быть эквивалентно

if ( showOrHide == true ) {
  $('#foo').show();
} else if ( showOrHide == false ) {
  $('#foo').hide();
}

, если только я полностью не пропустил, как это работает.Может кто-нибудь рассказать мне о том, что я здесь делаю неправильно?Мне не удалось найти аналогичную реализацию.

Ответы [ 3 ]

6 голосов
/ 22 марта 2011

вам просто нужно переключить (), больше ничего.

$('#search-options-btn').click(function() { $('#search-options').toggle(); });

0 голосов
/ 22 марта 2011

Это просто переключение между классами, а не с логическим значением.

$('#search-options-btn').click(function() { $('#search-options').toggle('yourClassName'); });

Если найдено yourClassName , то оно будет удалено, в противном случае добавится.

0 голосов
/ 22 марта 2011

showOrHide - внутреннее имя.Вы передаете bool:

$('#...').showOrHide(true)

, если хотите, чтобы элемент был виден, false, если хотите, чтобы он был скрыт.

...