Есть ли эквивалент .closest(), который ищет в дереве DOM вместо up?
Есть ли эквивалент .closest(), который ищет в дереве DOM вместо up?
Ответ 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
, но меньшую производительность.