2011-07-22 16 views
5

एचटीएमएलdiv पर एक ऑनक्लिक कॉलबैक कैसे संलग्न करें लेकिन div के अंदर किसी लिंक पर नहीं?

<div class='item_container'> 

[...bunch of links and pictures...] 
<a class='item_owner'>John Doe</a> 

</div> 

जावास्क्रिप्ट

/** 
    Bind the onclick only if you hover on the item since we got a lot 
    of items and several events and plugins to setup on them. 
*/ 
$('.item_container').live('mouseenter', function(e){ 
    $this = $(this); 
    if (!$this.data('isSetup')) { 
    $this.click(function(e){ 
     // do magic 
     return false; 
    }); 
    [... a lot of other stuff] 
    $this.data({'isSetup': true}); 
    } 
}); 
बेशक

जब मैं div में कहीं भी क्लिक करें, यह 'जादू' प्रदर्शन करती है। return false पर धन्यवाद, अगर मैं div में किसी भी लिंक पर क्लिक करता हूं, तो यह अभी भी 'जादू करें' करता है और पृष्ठ को नहीं बदलता है, जो अपेक्षित व्यवहार है।

लेकिन एक लिंक है जो वास्तव में पृष्ठ को बदलने के लिए लगता है, मालिक लिंक। परेशानी है, मेरे वर्तमान सेट अप के साथ, मैं इसे काम करने से रोकता हूं।

+0

यह भी ऐसा ही करता है आप का उपयोग करता है, तो 'e.preventDefault()'? – ianbarker

+0

तत्व के प्रकार को क्लिक करें ... this.tagName। यदि कोई लिंक है तो झूठी वापसी न करें ... – 2GDev

+0

@ 2GDev: इसे एक उत्तर दें। यदि यह काम करता है, तो आपको प्रतिनिधि –

उत्तर

4

आपको पेरेंट .item_container के लिंक से ईवेंट के प्रचार को रोकने की आवश्यकता है।

कोड को यह ब्लॉक जोड़ें:

$('.item_container a.item_owner').live('click', function(e){ 
e.stopPropagation(); 
}); 
+0

प्रदर्शन के रूप में $ ('div.item_container a.item_owner') बेहतर चयनकर्ता – MaMa

+0

होगा यदि यह मेरे पास ऐसे div में अन्य लिंक नहीं हैं जो रोकना नहीं है प्रचार केवल मालिक लिंक को पृष्ठ परिवर्तन को ट्रिगर करना होगा। दूसरों को उन पर क्लिक नहीं करना चाहिए और उन्हें शेष क्षेत्र की तरह 'जादू करना' करना चाहिए। –

+0

@ ई-सैटिस: अद्यतन उत्तर की जांच करें। – Chandu

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