oto zgrubny kod HTML, z którym pracuję:
<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>
Muszę przejść od strony .current_sub
, znaleźć najbliższą poprzednią .par_cat
i coś z nią zrobić.
.find("li.par_cat")
zwraca cały ładunek .par_cat
(mam około 30 na stronie). Muszę wycelować w jednego.
Naprawdę doceniłbym wszelkie wskazówki :)
jquery
html
traversal
tree-traversal
daulex
źródło
źródło
Odpowiedzi:
Próbować:
Przetestowałem to ze swoimi znacznikami:
wypełni najbliższą poprzednią
li.par_cat
„woohoo”.źródło
:first
pracujesz na liście zwracanych elementów, która zaczyna się najbliżej wybranego obiektu (w przeciwieństwie do góry do dołu względem strony)?:first
selektor CSS, który wybiera pierwszy element w DOM (np. Wybieradiv.red:first
pierwszy czerwony DIV w DOM ), nie czy jQuery przeanalizował selektor inaczej?Próbować
źródło
Użycie prevUntil () pozwoli nam zdobyć dalekiego rodzeństwa bez konieczności zdobywania wszystkich. Miałem szczególnie długi zestaw, który był zbyt obciążający procesor przy użyciu prevAll ().
Pobiera pierwsze poprzedzające rodzeństwo, jeśli pasuje, w przeciwnym razie pobiera rodzeństwo poprzedzające pasujące, więc po prostu wykonujemy kopię zapasową jeszcze jednego za pomocą prev (), aby uzyskać pożądany element.
źródło
Myślę, że wszystkim odpowiedziom czegoś brakuje. Wolę używać czegoś takiego
Oszczędność konieczności dodawania: najpierw wewnątrz selektora i jest łatwiejsza do odczytania i zrozumienia. Metoda prevUntil () również ma lepszą wydajność niż metoda prevAll ()
źródło
Możesz śledzić ten kod:
Możesz mieć pomysł z tego.
źródło