2012-10-18 20 views
11

मुझे .closest() और .parents() की कार्यक्षमता के बीच कुछ चाहिए। मैं कुछ निश्चित माता-पिता को एक निश्चित तत्व के सभी माता-पिता को कुछ सीएसएस लागू कर रहा हूं। अभी मैं while लूपिंग कर रहा हूं, लेकिन ऐसा लगता है कि ऐसा करने का एक बेहतर तरीका है। एक while पाश बिनाजब तक कोई निश्चित माता-पिता तक पहुंच नहीं जाता है तब तक सभी माता-पिता कैसे प्राप्त करें

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

मैं यह कैसे प्राप्त कर सकते हैं:

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

मैं नहीं बल्कि इनमें से किसी एक की तरह कुछ करना चाहते हैं?

+0

आप http://api.jquery.com/parentsUntil/ के लिए देख रहे हैं? –

+0

* गंदगी में शिकंजा जूता * ... हाँ ... – brentonstrine

+0

जब आप सीधे सीएसएस के साथ गड़बड़ करने के लिए जावास्क्रिप्ट का उपयोग करते हैं, तो इसे आमतौर पर * कोड गंध * माना जाता है (जब तक कि आप एनिमेशन नहीं कर रहे हों)। –

उत्तर

22

आप उपयोग कर सकते हैं jQuery parentsUntil() समारोह

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

... मैं मूर्ख हूँ। – brentonstrine

+17

@ ब्रेंटनस्ट्रिन: वह अजीब क्षण जब आपका "मैं बेवकूफ हूं" टिप्पणी उत्तर से अधिक अपवित्र हो जाती है। –

+0

@MadaraUchiha: हाँ, लेकिन अगर उन उपरिवर्तक मेरे जैसे हैं, तो संभवतया वे वही सटीक थे "मैं बेवकूफ हूं" महसूस कर रहा हूं ;-) –