методы выбора jquery - PullRequest
3 голосов
/ 02 июня 2011

Мне нравится использовать методы hide () и show (), но я сталкивался с чьими-то сценариями, где они никогда не используют его.
Вместо этого я вижу, что они используют attr () для всего, что связано с отображением.

$("#element").attr("style", "visibility:hidden");
$("#element").attr("style", "visibility:visible");

Это просто чисто преференциально?
Или более выгодно использовать одно против другого?

Ответы [ 3 ]

3 голосов
/ 02 июня 2011

Есть разница.Возьмите .hide(), например:

Это примерно эквивалентно вызову .css('display', 'none'), (...)

visibility и display - это два разных свойства CSS.Использование visibility: hidden; оставляет место для элемента в макете, но не отображает его.

Другое (незначительное) отличие состоит в том, что вызов .attr("style", '...') переопределит все другие стили, которые могут быть установлены для элемента.

1 голос
/ 02 июня 2011

Различия точно есть. Методы show () и hide () позволяют вам использовать анимацию, если вы хотите, установив продолжительность показа или скрытия. Кроме того, hide будет отслеживать текущие настройки дисплея (встроенный, блокировать и т. Д.). http://api.jquery.com/hide/

Использование .css ('display', 'none') или .css ('display', 'block'), вероятно, быстрее, но обеспечивает меньшую функциональность.

Когда вы используете show () / hide () или .css () для управления отображением, это зависит от того, чего вы пытаетесь достичь.

Еще одна заметка. TheDramaLama говорит, что hide () удаляет элемент из исходного кода. Я думаю, что TheDramaLama имел в виду, что он удаляет его позиционно, но он все еще остается в исходном коде (он же DOM).

1 голос
/ 02 июня 2011

Hide () и show () эффективно удаляют элемент из исходного HTML.

Правила видимости влияют только на то, видите ли вы содержимое элементов;занимаемое ими пространство все еще зарезервировано и становится пустым местом.

...