2011-09-14 17 views
5

Super-technical drawingjQuery: * केवल * इस तत्व

ऊपर उच्च कलात्मक ड्राइंग में, हरे वर्ग गुलाबी एक का एक बच्चा है पर क्लिक करें। गुलाबी एक मेरे काम से हरे रंग के चारों ओर लपेटा जाता है, इसलिए हरा वर्ग कुछ भी हो सकता है - एक हाइपरलिंक, एक छवि, बटन, आदि

मैं केवल गुलाबी div पर एक क्लिक कैप्चर करना चाहता हूं अगर यह ' हरे तत्व पर भी क्लिक करें।

यह हरे रंग के वर्ग पर माउसएन्टर का उपयोग करके एक बूलियन फ़्लिप करके किया जा सकता है, लेकिन यह मेरे लिए ऐसा करने का एक गन्दा तरीका लगता है।

कोई सुराग?

महत्वपूर्ण संपादन: मैं हरे रंग के वर्ग के साथ गड़बड़ नहीं कर सकता, इसलिए क्लिक ईवेंट में कुछ भी नहीं जोड़ रहा है।

+3

मैं सबसे परेशान अतः मुझे नया टैग बनाना नहीं जाने देंगे कि हूँ 'रोमांचक छवि' = [ –

+0

करता है इस सूत्र: http://stackoverflow.com/questions/ 6635659/jquery-bind-click-something-but-element आपके जैसा ही मुद्दा है? – JMax

+0

इसी तरह, लेकिन काफी नहीं। –

उत्तर

8

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

$('.pink-box-selector').click(function(e) { 
    if ($(e.target).is('.pink-box-selector')) { 
     // do stuff here 
    } 
}); 
+0

बस एक साइड नोट के रूप में, इस समाधान के फायदों में से एक यह है कि आपको उस तत्व के आधार पर कोड को संशोधित करने की आवश्यकता नहीं है जिसे आप लपेटते हैं (चूंकि आपने कहा था कि लपेटा हुआ तत्व भिन्न हो सकता है)। यह मूल रूप से सफेद-सूची है, बनाम ब्लैक-लिस्टिंग। – jmar777

+0

बिल्कुल सही। चीयर्स। –

1

$("#div_id :not('#excluded_element')).click(); मदद करेंगे? http://api.jquery.com/not-selector/

+1

यह चयनकर्ता कुछ भी नहीं चुनेगा। यह कुछ * * div_id' के अंदर * के लिए देखेगा कि * वास्तव में एकमात्र तत्व नहीं है जो वास्तव में वहां है। – jmar777

+0

@ jmar777 बहुत अच्छी तरह से मनाया गया। –

0

सेटअप तत्व "हरी" के लिए एक अलग क्लिक करें घटना श्रोता और यह event.preventDefault()

5

दो विकल्प। आप पहले या तो जांच सकते हैं कि लक्ष्य हरा div है या नहीं।

$('#pinkdiv').click(function(e) { 
    if ($(e.target).is('#greendiv')) return; 
    // handle the event 
}); 

या आप सामान्य रूप से गुलाबी div के लिए क्लिक हैंडलर लिख सकते हैं और प्रचार से हरी div पर क्लिक करता है रोक सकता है।

$('#greendiv').click(function(e) { 
    e.stopPropagation(); 
}); 
+0

@ jmar777 का समाधान यह जांचने के पहले विकल्प के लिए समाधान है कि क्या लक्ष्य गुलाबी div अधिक समझ में आता है। –

+0

यह भी अच्छा है, हालांकि :)। – jmar777

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