Как проверить видимость нескольких div'ов проще? - PullRequest
2 голосов
/ 02 апреля 2010

В настоящее время я использую приведенный ниже код, который работает хорошо.

$("#topperAtBaseLevel:visible, #lowerAtBaseLevel:visible, #midAtBaseLevel").hide();

любой оптимизированный код? (я не могу использовать тот же класс) я имею в виду, как правильно использовать :visible

Ответы [ 4 ]

0 голосов
/ 02 апреля 2010

Вы можете сделать это так:

$("#topperAtBaseLevel, #lowerAtBaseLevel, #midAtBaseLevel").filter(":visible").hide();

Однако это приводит к тому, что все скрыто, вызов .hide() для скрытого элемента - это нормально, в этом нет ничего плохого, поэтому может быть так:

$("#topperAtBaseLevel, #lowerAtBaseLevel, #midAtBaseLevel").hide();
0 голосов
/ 02 апреля 2010

Это способ достичь того, ради чего ты идешь. Вы используете селекторы правильно и эффективно.

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

Но оптимизация не нужна, не так ли? Мы говорим о переходе от быстрой молнии к двойной быстрой молнии. Превосходный профессионал jQuery просто сделает то, что вы сделали.

0 голосов
/ 02 апреля 2010

Ну, все, о чем я могу думать, это:

$('[id$="AtBaseLevel"]:visible').hide();

Это соответствует любому элементу, чей идентификатор заканчивается на AtBaseLevel. Имейте в виду, короче не значит быстрее, так как поиск идентификаторов происходит так же быстро, как и. Селекторы на основе атрибутов не так оптимизированы.

0 голосов
/ 02 апреля 2010

Этот код кажется идеальным; вы используете: видимый правильно.

Вы можете взглянуть на справочную страницу jQuery: видимый селектор , если хотите точно знать, как он работает, но в нескольких словах он выбирает видимые элементы =)

...