2009-05-14 13 views
25

क्या कोई तत्व किसी अन्य के भीतर है या नहीं, यह जांचने के लिए जावास्क्रिप्ट या jQuery में कोई सीधा तरीका है।मैं कैसे जांच सकता हूं कि कोई तत्व jQuery में किसी अन्य के भीतर है या नहीं?

मैं $(this).parent का जिक्र नहीं कर रहा हूं क्योंकि मैं जिस तत्व को खोजना चाहता हूं वह तत्वों के पेड़ में एक यादृच्छिक संख्या चरण कम हो सकता है।

if($("div#THIS_DIV").isWithin("div#THIS_PARENT")) ... 

अगर कोई सीधा रास्ता मैं हूँ नहीं है:

<div id="THIS_PARENT"> 
<div id="random"> 
    <div id="random"> 
    <div id="random"> 
    <div id="THIS_DIV"> 
(... close all divs ...) 

तो छद्म कोड में:

एक उदाहरण के रूप में, मैं अगर < div id="THIS DIV">< div id="THIS PARENT"> भीतर किया जाएगा जाँच करने के लिए चाहते हैं शायद इसके लिए एक समारोह करें लेकिन फिर भी यह पूछने लायक है।

+0

आप समारोह 'jQuery.contains (कंटेनर, वंशज)' में निर्माण का उपयोग कर सकते हैं। नीचे मेरा जवाब देखें। – TLindig

उत्तर

44

आप ऐसा कर सकता है:

if($('#THIS_DIV','#THIS_PARENT').length == 1) { 

} 

खोज के लिए specifying a context (दूसरा तर्क) से हम मूल रूप से कह रहे हैं "#THIS_PARENT की ID वाला तत्व के भीतर #THIS_DIV की आईडी के साथ एक तत्व के लिए देखने के लिए"। JQuery का उपयोग करके इसे करने का यह सबसे शानदार तरीका है।

हम भी, इस तरह इसे लिखने find का उपयोग कर सकता है अगर यह आप के लिए और अधिक समझ में आता है:

if($('#THIS_PARENT').find('#THIS_DIV').length == 1) { 

} 

या इस तरह, parents का उपयोग कर, यदि आप ऊपर की तरफ बच्चे से खोज करना चाहते हैं:

if($('#THIS_DIV').parents('#THIS_PARENT').length == 1) { 

}  

इनमें से कोई भी ठीक काम करना चाहिए। length बिट यह सुनिश्चित करने के लिए आवश्यक है कि "खोज" की लंबाई> 0 है। मैं निश्चित रूप से आपको सलाह देता हूं कि आप पहले व्यक्ति के साथ जाएं क्योंकि यह सबसे आसान है।

इसके अलावा, यदि आप आईडी द्वारा किसी तत्व का जिक्र कर रहे हैं तो टैग नाम के साथ चयनकर्ता को प्रीफेस करने के लिए यह आवश्यक नहीं है (हालांकि बिल्कुल ठीक है)। जहां तक ​​गति, हालांकि, यह वास्तव में मदद नहीं करता है क्योंकि jQuery आंतरिक getElementById() आंतरिक रूप से उपयोग करने जा रहा है। टैग नाम का उपयोग करना केवल कक्षा द्वारा चयन करते समय महत्वपूर्ण है, div.myclass.myclass से बहुत तेज़ है, यदि केवल <div> तत्वों को विशेष श्रेणी होने वाली है।

+0

क्योंकि मैं यहां "जावास्क्रिप्ट" खोजकर यहां पहुंचने में कामयाब रहा हूं, प्रोटोटाइप लाइब्रेरी का उपयोग करके इसे 'पैरेंट()' संस्करण के समान करने का एक तरीका है: 'if ($ ('THIS_DIV')। ('# THIS_PARENT')) {..} ' – Izkata

16
jQuery के साथ

> = 1.4 (2010) आप बहुत तेजी से समारोह jQuery.contains()

यह स्थिर विधि डोम तत्वों, jQuery तत्वों के साथ नहीं के साथ काम करता है और true या false रिटर्न उपयोग कर सकते हैं।

jQuery.contains(container, descendant) 

उदाहरण: यह जांचने के लिए एक तत्व दस्तावेज़ में है आप ऐसा कर सकता है:

jQuery.contains(document.body, myElement) 
संबंधित मुद्दे

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