2009-05-27 12 views
5

नीचे मैं jQuery के साथ एक विशेष तत्व का चयन करने के साथ संघर्ष कर रहा हूं। स्थितियां यहां उनका उल्लेख:jQuery चयन: ऊपर की ओर बढ़ना, फिर

  • मेरी समारोह, this संदर्भ एक span में प्रासंगिक बिंदु पर।
  • span एक बच्चा, भव्य बच्चा, या महान भव्य बच्चा हो सकता है, लेकिन कहीं पदानुक्रम ऊपर है, यह td द्वारा निहित है।
  • मैं td के अंदर अंतिम span चुनना चाहता हूं।
  • spanthis हो सकता है, या यह span हो सकता है।
  • span टैग का चयन करने के लिए td युक्त प्रत्यक्ष बच्चा है, इसलिए last-child काम करने योग्य है। हालांकि, भविष्य में लचीलापन के लिए एक समाधान जो यह नहीं मानता कि यह प्रत्यक्ष बच्चा है उसे प्राथमिकता दी जाती है।

    $(this).parents('td') 
    

    मैं डोम पेड़ नीचे वापस पार करने के लिए चुने जाने का तरीका td के अंदर अंतिम span प्राप्त करने के लिए पता नहीं है:

अब तक, मैं सही माता पिता तत्व का चयन करने के लिए इस का उपयोग कर रहा । धन्यवाद!

संपादित

नीचे मेरी टिप्पणी के अनुसार, यह भी एक span या div, जो भी पिछले है से चयन करने के लिए अच्छा होगा।

उत्तर

12
$(this).parents('td').children('span:last'); 

चाल चलाना चाहिए।

संपादित

मैं न केवल तत्काल बच्चों से निपटने के लिए अपनी इच्छा को नोटिस नहीं किया था। आप सभी decendants चाहते हैं, तो आप का प्रयोग करेंगे

$(this).parents('td').find('span:last') 

मैं span हमेशा td का एक बच्चा होगा ग्रहण किया था।

अंतिम संपादित

भावी पीढ़ी की खातिर के लिए (और यह आसान लोगों भविष्य में इस सवाल का जवाब खोजने के लिए बनाने के लिए), के बाद से यह पहले से ही जवाब के रूप में स्वीकार कर लिया गया, बेन में एक और अधिक सुरुचिपूर्ण समाधान के साथ आया था उसके जवाब है कि मैं यहाँ डाल करने के लिए जा रहा हूँ: closest() के लिए

$(this).closest('td').find('div,span').filter(':last') 

के रूप में बेन ने कहा, आप JQuery 1.3 का उपयोग करना चाहिए काम करने के लिए। अच्छा कार्य!:-)

+0

बच्चे() केवल तत्काल बच्चों की खोज करते हैं। –

4

समारोह आप देख रहे हैं find(expr) है, जो सभी वंशज नोड्स खोज:

$(this).closest('td').find('span:last') 

संपादित करें:

$(this).closest('td').find('div,span').filter(':last') 

: पिछले div या span चयन करने के लिए संपादित करें 2:Markके बजाय closest() का उपयोग करने के बारे में एक उत्कृष्ट बिंदु बनाता है, लेकिन ध्यान रखें कि इसके लिए आपको jQuery 1.3 का उपयोग करने की आवश्यकता है।

+0

धन्यवाद! क्या हम थोड़ा आगे ट्विक कर सकते हैं? क्या होगा यदि मैं अंतिम तत्व खोजना चाहता था, लेकिन अवधि के लिए सीमित होने की बजाय, यह एक अवधि या div हो सकता है? –

+0

आप जो भी तत्व चाहते हैं उसके साथ आप स्पैन को प्रतिस्थापित कर सकते हैं। –

+0

मैं एक अवधि या एक div के बारे में बात कर रहा हूँ। अमान्य वाक्यविन्यास, लेकिन इस तरह कुछ: $ (यह)। माता-पिता ('td') फ़िल्टर ('इनपुट')। ('Div, span: last') –

5

मैं इस मामले में closest का उपयोग करना पसंद करता हूं, इसके बजाय parents। आपको पूर्वजों में दो या दो से अधिक 'टीडी' तत्व होने की चिंता करने की ज़रूरत नहीं है।

$(this).closest('td').children("span:last") 
संबंधित मुद्दे