2012-10-18 10 views
11

Potrzebuję czegoś pomiędzy funkcjami .closest() i .parents(). Stosuję niektóre CSS do wszystkich rodziców danego elementu aż do pewnego rodzica. Teraz jestem w pętli while, ale wygląda na to, że jest lepszy sposób na zrobienie tego.Jak zdobyć wszystkich rodziców, aż do pewnego rodzica zostanie osiągnięty

var goUp = $(".distant-child"); 
while(!goUp.hasClass("ancestor-to-stop-at")){ 
    goUp.css("height","100%"); 
    goUp = goUp.parent(); 
} 

wolałbym coś zrobić jak jedna z nich:

$(".distant-child").closest(".ancestor-to-stop-at").css("height","100%"); //won't work because .closest() only returns the top ancestor 
$(".distant-child").parents(".ancestor-to-stop-at").css("height","100%"); //won't work because .parents() doesn't take this parameter and won't stop at the specified element. 

Jak mogę to osiągnąć bez while pętli?

+0

Szukasz http://api.jquery.com/parentsUntil/? –

+0

* Wyczyść buty w błocie * ... tak ... – brentonstrine

+0

Gdy używasz JavaScriptu do bezpośredniej komunikacji z CSS, zwykle traktowany jest jako * zapach kodu * (chyba, że ​​robisz animacje). –

Odpowiedz

22

Można użyć jQuery parentsUntil() funkcja

$(".distant-child").parentsUntil(".ancestor-to-stop-at").css("height","100%"); 
+35

... Jestem idiotą. – brentonstrine

+17

@brentonstrine: Niezręczny moment, w którym twój komentarz "Jestem idiotą" jest lepszy od samej odpowiedzi. –

+0

@MadaraUchiha: Tak, ale jeśli ci kupcy są do mnie podobni, to prawdopodobnie mieli dokładnie to samo uczucie "jestem idiotą" ;-) –

Powiązane problemy