2012-08-31 15 views
9

element दिया गया है, एक जावास्क्रिप्ट ऑब्जेक्ट/डीओएम तत्व युक्त एक चर, मैं कैसे निर्धारित करूं कि event.target element के अंदर कोई तत्व है या नहीं?jquery event.target is_a_child_of (element)

function(event){ 
    // assume that var element exists in this scope 
    if(event.target == a_child_of(element)) 
     // do something 
} 


<div id="myDiv"> 
    <div class="innerDiv"> 
     <input type="text"/> 
    </div> 
</div> 

तो elementmyDiv है, एक घटना भीतरी div या इनपुट, या किसी अन्य तत्व यह है कि myDiv अंदर मौजूद हो सकता है बयान सही करने के लिए मूल्यांकन करने के लिए कारण चाहिए पर होने वाली।

मुझे कल्पना है कि मैं बाल तत्वों की एक सरणी बनाने के लिए एक पुनरावर्ती फ़ंक्शन का उपयोग कर सकता हूं और फिर जांच सकता हूं कि event.target सरणी में है, लेकिन मैं देखना चाहता हूं कि पहले एक सरल उत्तर है या नहीं।

उत्तर

10

jQuery to the rescue:

if (jQuery.contains(element, e.target)) 
+0

+1 उपयोग कर सकते हैं। धन्यवाद, मुझे अनुमति मिलने के बाद मैं स्वीकार करूंगा। – Nick

33

तुम भी .has()

if ($(element).has(e.target).length > 0){ 
// 
} 
+1

+1, यह भी काम करता है। – Nick

+0

इसमें अनावश्यक काम शामिल है। – SLaks

+8

इसी तरह की समस्या में चलने के बाद इस प्रश्न का पुनरीक्षण करते हुए, ऐसा लगता है कि स्लैक्स उत्तर केवल तत्काल बच्चों के लिए काम करता है, जबकि मूसा के सभी वंशजों के लिए काम करता है। यदि आप जांचना चाहते हैं कि तत्व पर क्लिक किया गया है, तो किसी भी स्तर पर दिए गए माता-पिता के अंदर निहित है, यह उपयोग करने के लिए सही कोड है। दोनों एकल स्तर के बच्चों के लिए काम करते हैं, और स्लैक्स का जवाब अधिक कुशल हो सकता है यदि आप जानते हैं कि बच्चों के खिलाफ जांच करने के लिए केवल एक स्तर का बच्चा है। – Nick

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