Справочник API

.has() в jQuery

Содержание статьи
  • Категории: Traversing › Filtering

    Создает новый набор jQuery из элементов исходного набора, среди потомков которых имеются элементы, соответствующие заданному параметру.

Синтаксис и описание:

  • Добавлено в jQuery 1.4.has( selector )

  • Добавлено в jQuery 1.4.has( contained )

  • Метод .has() фильтрует набор jQuery, оставляя элементы, среди потомков которых (на любой глубине) есть хотя бы один, соответствующий селектору, либо содержащие конкретный переданный DOM-элемент.

    В отличие от .filter(), который проверяет сами элементы набора, .has() проверяет их содержимое.

Возвращаемое значение: (объект) Набор jQuery — подмножество исходного.

Параметры:

  • selector – (строка) селектор для поиска среди потомков.

  • contained – (элемент DOM) конкретный элемент, наличие которого среди потомков проверяется.

  1. Примечание:

    Сам найденный потомок в результат не попадает — в наборе остаются элементы верхнего уровня (родители), удовлетворившие условию.

  2. Примечание:

    Селектор :has() и метод .has() для простых случаев дают одинаковый результат ($('li:has(ul)') ≈ $('li').has('ul')), но :has() — часть выражения-селектора и участвует уже на этапе поиска, а .has() применяется к уже готовому набору jQuery.

  3. В jQuery 3.x и 4.0:

    Метод не менялся, работает без изменений в 3.7.1 и 4.0. Селектор :has() тем временем вошёл в спецификацию CSS и поддерживается всеми современными браузерами нативно, поэтому прямой нативный аналог — document.querySelectorAll('li:has(ul)').

Примеры:

  1. Подсветить пункты списка, содержащие вложенный список.

    $('li').has('ul').addClass('has-children');
  2. Проверить наличие конкретного элемента среди потомков.

    var icon = document.querySelector('.icon-error');
    $('.form-group').has(icon).addClass('has-error');
  3. Нативный аналог через CSS-селектор :has() (поддерживается современными браузерами).

    document.querySelectorAll('li:has(ul)').forEach(function(li) {
      li.classList.add('has-children');
    });

[ наверх ]

Вопросы и ответы

Для чего используется .has() в jQuery?

Создает новый набор jQuery из элементов исходного набора, среди потомков которых имеются элементы, соответствующие заданному параметру.

Поиск по материалам

Начните вводить — поиск работает по заголовкам и тексту.

Esc — закрытьВсе материалы →