Селекторы видимости в jQuery позволяют выбирать элементы DOM на
основе их отображения на странице: видимы они пользователю или скрыты.
Такие селекторы особенно полезны при работе с динамическим контентом,
анимациями и фильтрацией элементов. Основные селекторы видимости —
:visible и :hidden.
:visibleСелектор :visible выбирает все элементы, которые
отображаются на странице. Элемент считается видимым,
если:
display: none.visibility: hidden (в сочетании с
opacity: 0 учитывается, хотя формально элемент занимает
место).Примеры использования:
// Выбирает все видимые абзацы
$("p:visible").css("color", "blue");
// Проверка видимости конкретного элемента
if ($("#menu").is(":visible")) {
console.log("Меню отображается");
}
Особенность :visible в том, что она учитывает
реальные размеры элемента. Если элемент имеет
height: 0 и width: 0, он будет считаться
скрытым, даже если display не равен none.
:hiddenСелектор :hidden является противоположностью
:visible и выбирает элементы, которые не
отображаются на странице. Сюда попадают элементы, у
которых:
display: nonevisibility: hiddenwidth: 0,
height: 0)Примеры использования:
// Скрывает все скрытые элементы (на случай динамического отображения)
$("div:hidden").fadeIn(400);
// Проверка скрытого состояния
if ($("#popup").is(":hidden")) {
console.log("Попап скрыт");
}
Эффективно использовать :hidden для добавления
анимаций и постепенного отображения контента.
Селекторы видимости могут сочетаться с другими селекторами для точного выбора элементов:
// Все видимые элементы списка с классом active
$("ul li.active:visible").addClass("highlight");
// Все скрытые изображения в контейнере
$("#gallery img:hidden").fadeIn(300);
Такая комбинация повышает точность операций, особенно в сложных DOM-структурах.
Помимо селекторов, jQuery предоставляет методы для управления видимостью элементов:
show() — делает элемент видимым.hide() — скрывает элемент.toggle() — переключает состояние видимости.fadeIn(), fadeOut(),
fadeToggle() — анимации появления/исчезновения.slideDown(), slideUp(),
slideToggle() — анимации скольжения.Примеры:
// Скрывает все видимые блоки с классом .content
$(".content:visible").hide();
// Переключает видимость скрытых элементов
$(".item:hidden").toggle();
Методы show() и hide() меняют
CSS-свойство display, а методы анимации
(fadeIn, slideDown) постепенно изменяют
свойства opacity или height, создавая плавный
эффект.
display: none полностью исключаются из визуального потока,
поэтому :visible их не выберет.display: none), все вложенные элементы считаются скрытыми,
даже если у них нет собственного свойства
display: none.style. Элемент с visibility: hidden в CSS
будет считаться скрытым.:visible и :hidden на больших документах может
быть ресурсоёмким, особенно при комбинировании с другими сложными
селекторами. В таких случаях рекомендуется сначала сузить выборку по
классам или тегам..is()Метод .is() позволяет определить, видим ли
конкретный элемент, используя селекторы :visible и
:hidden:
if ($("#notification").is(":visible")) {
$("#notification").fadeOut(200);
}
if ($("#tooltip").is(":hidden")) {
$("#tooltip").fadeIn(200);
}
В отличие от фильтров, .is() возвращает булево
значение, что удобно для условий.
:visible — выбирает элементы, реально отображаемые на
странице.:hidden — выбирает скрытые элементы по любому
критерию.show(), hide(),
toggle() управляют видимостью через CSS.fade, slide) добавляют плавный
переход между состояниями..is() позволяет работать с
отдельными элементами в условиях и логике интерфейса.Селекторы видимости — важный инструмент для динамических интерфейсов, фильтрации и анимаций, обеспечивая точный контроль над отображением элементов без прямого изменения структуры DOM.