2012-05-11 8 views
8

मैं आंतरिक तत्व के लिए भी क्लिक करके onclick को आंतरिक तत्व के लिए कैसे रोकूं।jquery onclick पैरेंट तत्व

<div id="1" onclick="alert('1')"> 
<div id="2" onclick="alert('2')"></div> 
</div> 

तो दूसरी div (आईडी = "2") पहले की चोटी पर दिख है, और यह क्लिक किया जाता है, आप दोनों अलर्ट मिल जाएगा 1 & 2.

मैं कैसे यह इतना बच सकते हैं मुझे केवल पर क्लिक करने के बारे में चेतावनी मिलती है, बाहरी div के पास किसी भी ऑनक्लिक फ़ंक्शन को पूरी तरह से अक्षम किए बिना।

उदाहरण:http://jsfiddle.net/DPCx8/

उत्तर

7
​var outer = document.getElementById('outer'); 
outer.onclick = function(event) 
    { 
     alert('outer'); 
     event.stopPropagation(); 
    }​​ 
    var inner = document.getElementById('inner'); 
inner.onclick = function(event) 
    { 
     alert('inner'); 
     event.stopPropagation(); 
    } 
की

http://jsfiddle.net/DYykA/1/

+0

धन्यवाद! यह पूरी तरह से काम करता है। मुझे 'स्टॉपप्रॉपेशन()' लगाने में परेशानी हो रही थी, इसलिए इससे मदद मिलती है! –

6

तुम इतनी घटना माता-पिता के लिए ऊपर बुलबुला नहीं है, बच्चे को stop the propagation की जरूरत है।

$("#inner").on("click", function(e){ 
    e.stopPropagation(); 
}); 
+0

धन्यवाद उत्साह से भरा हुआ रोकने के लिए! मैंने इसे जावास्क्रिप्ट में डालने का प्रयास किया है, और इसे काम पर नहीं ला सकता है। मैंने पहले और बाद में 'अलर्ट' रखा है और मुझे अभी भी 'बाहरी' अलर्ट –

+0

@iight आप हैंडलर सीधे HTML पर जोड़ रहे हैं - ऐसा न करें। इसके बजाए, जैसा कि मैंने ऊपर किया था, jQuery के माध्यम से एक सीएसएस चयनकर्ता के साथ इसे जोड़ें। – Sampson

+0

जो मैंने किया था। मैंने इसे एक स्क्रिप्ट के रूप में जोड़ा, तत्व पर नहीं –

3

उपयोग event.stopPropogation(); घटना

+0

धन्यवाद! बहुत अच्छा काम करता है! –