2014-04-09 7 views
7

मैं इस तरह एक पदानुक्रम है का चयन करें:jQuery .parent() कई स्तरों अप

:

<search> 
    <inner> 
     <input/> 
     <p/> 
     <img/> 
    </inner> 
</search> 

मुझे क्या करना कोशिश कर रहा हूँ <input/> onFocus की मूल <search> चयन करने के लिए है, लेकिन अगर मैं यह कर

$(function(){ 
    $("input").focus(function(){ 
     console.log($(this).parent("search")); 
    }); 
}); 

कंसोल एक खाली सरणी दिखाता है। माता-पिता को एक से अधिक स्तर तक चुनने का कोई साफ तरीका है? ऐसा करने का एकमात्र तरीका यह है कि यह .parent().parent("search") होगा, जो काम करेगा, लेकिन यह बहुत साफ नहीं है, और यदि मैं माता-पिता को 5 स्तरों का चयन करने की कोशिश कर रहा था, तो यह केवल अत्याचारी होगा।

+1

http://api.jquery.com/closest/ –

उत्तर

19

.closest() का प्रयास करें:

सेट में प्रत्येक तत्व के लिए, पहला तत्व है कि तत्व में ही परीक्षण और डोम संरचना में उसकी पूर्वजों के माध्यम से ऊपर से गुजरने से चयनकर्ता से मेल खाता हो।

$(this).closest("search") 
+0

यह बहुत अच्छा काम करता है! धन्यवाद! मुझे पता था कि कुछ रास्ता होना था। – David

+0

धन्यवाद एक लॉग @Oriol –

3

the docs से:

.parents() और .parent() पद्धतियों समान है, सिवाय इसके कि बाद केवल एक ही स्तर ऊपर डोम पेड़ यात्रा कर रहे हैं।

इसके बजाय $.parents का उपयोग करने का प्रयास करें।

+0

यह भी काम किया! बहुत बहुत धन्यवाद! – David

संबंधित मुद्दे