2012-10-18 41 views
11

Tôi cần một cái gì đó ở giữa chức năng của .closest().parents(). Tôi đang áp dụng một số CSS cho tất cả phụ huynh của một yếu tố nhất định cho đến một phụ huynh nhất định. Ngay bây giờ tôi là while lặp lại, nhưng có vẻ như có cách tốt hơn để làm điều này.Cách nhận tất cả phụ huynh cho đến khi một phụ huynh nào đó đạt được

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

Tôi muốn làm điều gì đó như một trong những:

$(".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. 

Làm thế nào tôi có thể đạt được điều này mà không có một vòng lặp while?

+0

Bạn đang tìm kiếm http://api.jquery.com/parentsUntil/? –

+0

* scuffs giày trong bụi bẩn * ... có ... – brentonstrine

+0

Khi bạn sử dụng JavaScript để gây rối với CSS trực tiếp, nó thường được coi là một * mã mùi * (trừ khi bạn đang làm hình động). –

Trả lời

22

Bạn có thể sử dụng jquery parentsUntil() chức năng

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

... Tôi là một thằng ngốc. – brentonstrine

+17

@brentonstrine: Khoảnh khắc khó xử đó khi nhận xét "Tôi là một thằng ngốc" của bạn nhận được nhiều lợi ích hơn bản thân câu trả lời. –

+0

@MadaraUchiha: Vâng, nhưng nếu những người upvoters giống như tôi, thì họ có lẽ đã có chính xác cùng một "tôi là một thằng ngốc" cảm giác ;-) –

Các vấn đề liên quan