Подтвердить что ты не робот

Есть ли эквивалент .closest(), который ищет в дереве DOM вместо up?

Есть ли эквивалент .closest(), который ищет в дереве DOM вместо up?

4b9b3361

Ответ 1

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

$('#Id').children('div');

или

$('#Id').find('div');

Ответ 2

Вы можете использовать метод find(). И получите элемент first из результирующего набора.

Ответ 3

$('#Id div:first') делает то, что вы ищете.

Также обратите внимание, что в то время как ближайший() возвращает только один элемент, find(), children(), а также $( "# Id div" ) возвращает все соответствующие элементы, поэтому вы должны добавить .first() или: сначала уменьшите результат до первого появления.

Ответ 4

В случае, если кому-то нужно выполнить поиск UP, легко с помощью . methods().

Вы можете оставить его пустым или указать селектора типа .parents( "div" ).

Ответ 5

Ближайший поиск UP связан с документацией "Для каждого элемента в наборе получите первый элемент, который соответствует селектору, тестируя сам элемент и пересекая его предков в дереве DOM", и, как вы можете видеть, "The .children() отличается от .find() тем, что .children() перемещается только на один уровень вниз по дереву DOM, а .find() может перемещаться по нескольким уровням, чтобы также выбирать элементы-потомки (внуки и т.д.)". Я не нашел хорошего решения для closest по дереву, потому что хорошая вещь о closest заключается в том, что его стоп-поиск элементов, когда он находит первый согласованный селектор и find, продолжает поиск. Так что вы можете использовать фильтр .first().

$('selector').first();

ИЛИ

obj.find('selector').first();

Он найдет соответствие нескольких элементов, но вернет только первый элемент, например closest, но меньшую производительность.

https://api.jquery.com/first/