2009-06-08 17 views
89

मैं वर्तमान में किसी तत्व के अभिभावक के माता-पिता को खोजने का प्रयास कर रहा हूं। मेरे पास एक लिंक क्लिक किया जा रहा है जो <td> में है, और मैं <tr> ऑब्जेक्ट प्राप्त करना चाहता हूं।माता-पिता के jQuery माता-पिता

क्यों नहीं "$ (यह)। माता-पिता()। अभिभावक()" काम? क्या होगा?

धन्यवाद,
ब्रेंडन

संपादित करें: ऐसा प्रतीत होता है मेरी वाक्य रचना में एक त्रुटि पूरी बात बंद फेंक दिया गया था। "$ (This) .parent()। माता-पिता()" तथ्य काम में करता है, लेकिन मैं $ (this) .closest ('tr') के साथ जा रहा "क्योंकि यह सबसे कारगर समाधान की तरह लगता है समापन।

+1

क्या आप कोड पोस्ट कर सकते हैं ताकि हम देख सकें कि आपका अभिभावक चयनकर्ता क्यों काम नहीं कर रहा है? – TStamper

उत्तर

213

सबसे अच्छा तरीका में शायद closest का उपयोग करेंगे:

$(this).closest('tr'); 

Check out the documentation:

पहले अगर यह निर्दिष्ट एक्सप्रेशन से मेल खाता देखने के लिए, यदि ऐसा है तो यह सिर्फ तत्व में ही रिटर्न वर्तमान तत्व को देखकर

निकटतम काम करता है। यदि यह मेल नहीं खाता है तो यह दस्तावेज़ को पैरेंट करना जारी रखेगा, माता-पिता द्वारा अभिभावक, जब तक एक तत्व नहीं मिलता है जो निर्दिष्ट अभिव्यक्ति से मेल खाता है। यदि कोई मिलान तत्व नहीं मिला है तो कोई भी वापस नहीं किया जाएगा।

+0

धन्यवाद .. यह वास्तव में काम करता है .... –

+0

यह एक आकर्षण की तरह काम करता है! – frabiacca

+0

ग्रेट बॉस ..: पी – chhameed

5

यह टुकड़ा अतीत में मेरे लिए प्रदर्शन किया है:।

$(this).parent().parent(); 

पोस्ट हमें देखने के लिए अगर वहाँ एक और समस्या कहीं हो सकता है के लिए कुछ कोड ...

+0

मैं इसके साथ सहमत हूं। मैं '$ (यह)। माता-पिता()। माता-पिता()' बिना किसी समस्या के – DrewT

20

यह काम करना चाहिए तुम भी $ कोशिश कर सकते हैं (यह) । टैग (टैग), जहां टैग वह टैग है जिसे आप ढूंढना चाहते हैं।

उदाहरण के लिए:

$(this).parents("tr:first") 

निकटतम tr "श्रृंखला को ऊपर" मिलेगा।

1

$ ($) .parent() को $ ($ (this) .parent() जैसे jQuery ऑब्जेक्ट में लपेटने का प्रयास करें। मुझे यह सुनिश्चित करने के लिए अक्सर यह करने की आवश्यकता होती है कि मेरे पास वैध jquery ऑब्जेक्ट है। वहां से आप माता-पिता के माता-पिता को पकड़ने में सक्षम होना चाहिए, या शायद() शायद।

+8

का उपयोग कर सकता हूं यह पूरी तरह व्यर्थ है। आप जो भी कर रहे हैं वह एक और jQuery ऑब्जेक्ट बनाकर समय बर्बाद कर रहा है ... – James

9

यही काम करना चाहिए ... तुम कोशिश कर सकते हैं

$(this).parents(':eq(1)'); 

.parents (चयनकर्ता) का कहना है सभी पूर्वजों कि चयनकर्ता

और से मेल मिलती है: (eq (1) का कहना है oneth लगता है शून्य अनुक्रमित है, तो दूसरा) तत्व सूची

+0

यह सुनिश्चित करने के लिए कि आप एक HTML एंकर टैग है, आप इसे सतर्क करने का प्रयास कर सकते हैं। करने का प्रयास करें: अलर्ट ('एंकर एचटीएमएल (' + $ (यह)। एचटीएमएल() + ')'); – Lathan

5

भी कोशिश

$(this).closest('div.classname').hide(); 
1
var getParentNode = function(elem, level) { 
    level = level || 1; 
    for (var i = 0; i < level; i++) { 
     if (elem != null) { 
      elem = elem.parentNode; 
     } 
    } 
    return elem; 
} 
0

.closest() हमेशा सबसे अच्छा विकल्प विशेष रूप से जब आप एक ही तत्व निर्माण नहीं है।

<div> 
    <div> 
     <div> 
     </div> 
    </div> 
</div> 

आप एक माता पिता के माता-पिता क्या कर सकते हैं और यह बहुत आसान है:

var parent = $('.myDiv').parent(); 
var parentParent = $(parent).parent(); 
var parentParentParent = $(parentParent).parent(); 

आदि

2

आप माता-पिता के लिए आईडी/वर्ग किसी भी प्रकार का है, तो आप माता-पिता का उपयोग कर सकते () लेकिन यह आपको सभी माता-पिता को < बॉडी तक देगा जब तक कि आप इसे फ़िल्टर नहीं करते हैं() या इसे

$(this).parents('.myClass'); 

उम्मीद है कि यह किसी की मदद करता है :)