JQuery: более элегантный, если / еще с селекторами - PullRequest
3 голосов
/ 12 мая 2009

Я часто выкладываю код такого типа:

if ($(this).val() == 'X') { $('#something').show(); }
else                      { $('#something').hide(); }

Я не в восторге от того, что $ ('# кое-что') появляется дважды. Есть ли более элегантный способ выразить это?

[Update] Я плохо сформулировал вопрос - я ищу общее решение, а не просто показать / скрыть (и, следовательно, переключить). Для общего случая выполнения различных действий с выбранным элементом (ами) на основе условия, существует ли более элегантная конструкция?

Ответы [ 2 ]

8 голосов
/ 12 мая 2009

toggle()

Переключить отображение каждого набора согласованные элементы на основе переключателя (true показывает все элементы, ложные шкуры все элементы).

Если переключатель верен, переключение делает их скрытыми (используя скрыть метод). Если переключатель ложен, переключатель показывает их (используя показать метод).

var result = ($(this).val() != 'X');
$('#something').toggle(result);

или короче

$('#something').toggle('X' != $(this).val());
3 голосов
/ 12 мая 2009

для общего вопроса о том, чтобы «#something» не появлялся дважды, я бы сказал, что его было бы удобнее читать дважды. в противном случае вы получите следующее:

$('#something')[$(this).val()=='X'?'show':'hide']();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...