2009-09-09 14 views
27

मैं divs का एक पेड़ है:रोकें निष्पादन

<div id="a" onclick="func"> 
    <div id="b" onclick="func"> 
     <div id="c" onclick="func"> 
     </div> 
    </div> 
</div> 

एक क्लिक के एक div यह बच्चों अदृश्य है बनाता है पर किया जाता है - यानी "एक" हो जाएगा "बी" और "पर क्लिक करें सी "अदृश्य।

function func{ 
    if ($(childId).hasClass("visible")){ 
    $(childId).removeClass("visible"); 
    $(childId).addClass("invisible"); 
} 

समस्या है: "बी" पर एक क्लिक कॉल करेंगे "एक" के लिए क्लिक करें और बनाने के "बी" और "सी" अदृश्य। मैं jQuery का उपयोग कर "ए" पर क्लिक कैसे अक्षम करूं?

धन्यवाद

उत्तर

53

आप बच्चे के लिए एक हैंडलर जोड़ सकते हैं कि प्रचार से क्लिक करें घटना पाएगा:

function handler(event) { 
    event.stopPropagation(); 
    // now do your stuff   
} 
$('#a').add('#b').click(handler); 

इस तरह '#b' के लिए क्लिक करता करने के लिए प्रचार नहीं करेंगे '#a'। न तो '#c' पर क्लिक करेगा '#b' पर जाएं, और इसलिए '#a' पर नहीं।

+0

यह बहुत अच्छा है, यहां तक ​​कि $ ("क्लिक क्लिक क्लास") के साथ भी काम करता है। (फ़ंक्शन (ई) {e.stopPropagation();}) पर क्लिक करें; मानते हैं .clickyClass के पास एक क्लिक हैंडलर – daveagp

+0

है जो इसे काम करने से माता-पिता पर बूटस्ट्रैप 'डेटा-टॉगल =" पतन "से भी रोक सकता है? क्योंकि मैं कोशिश करता हूं और असफल रहता हूं :( –

11

उपयोग

event.stopPropagation()

, माता पिता तत्वों के लिए एक घटना का बुदबुदाती बंद कर देता है ईवेंट की सूचना दी जा रही से किसी भी माता-पिता संचालकों को रोकने।

जब ख पर क्लिक करें और ग

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