вот грубый HTML-код, с которым я могу работать:
<li class="par_cat"></li>
<li class="sub_cat"></li>
<li class="sub_cat"></li>
<li class="par_cat"></li> // this is the single element I need to select
<li class="sub_cat"></li>
<li class="sub_cat"></li>
<li class="sub_cat current_sub"></li> // this is where I need to start searching
<li class="par_cat"></li>
<li class="sub_cat"></li>
<li class="par_cat"></li>
Мне нужно пройти от .current_sub
, найти ближайший предыдущий .par_cat
и сделать что-то к нему.
.find("li.par_cat")
возвращает всю нагрузку .par_cat
(у меня около 30 на странице). Мне нужно нацелиться на одного.
Буду очень признателен за любые советы :)
jquery
html
traversal
tree-traversal
daulex
источник
источник
Ответы:
Пытаться:
Протестировал это с вашей разметкой:
заполнит ближайший предыдущий
li.par_cat
"woohoo".источник
:first
вы работаете со списком возвращаемых элементов, который начинается ближе всего к выбранному объекту (в противоположность сверху вниз относительно страницы)?:first
CSS-селектор, который выбирает первый элемент в DOM (напримерdiv.red:first
, выберет первый красный DIV в DOM ), не проанализировал ли jQuery селектор по-другому?Пытаться
источник
Использование prevUntil () позволит нам получить удаленного брата, не имея всего. У меня был особенно длинный набор, который был слишком загружен процессором при использовании prevAll ().
Он получает первого предшествующего брата, если он совпадает, в противном случае он получает брата, предшествующего тому, который совпадает, поэтому мы просто создаем резервную копию еще одного с помощью prev (), чтобы получить нужный элемент.
источник
Я думаю, что во всех ответах чего-то не хватает. Я предпочитаю использовать что-то вроде этого
Сохраняет вас, не добавляя: сначала внутри селектора и легче читать и понимать. Метод prevUntil () также имеет лучшую производительность, чем использование prevAll ()
источник
Вы можете следовать этому коду:
Вы можете получить представление об этом.
источник