2013-01-08 20 views
8

मैं मार्कअपjQuery: पर क्लिक नेस्टेड तत्वों

<ol> 
    <li class="ListItem"> 
     <span class="sub">@qItem.CategoryText</span> 
     <input type="image" src="http://icons.iconarchive.com/icons/tatice/just-bins/256/bin-red-full-icon.png" width="30" class="deleteIcon" name="QuestionId" value="@qItem.Id" /> 
    </li> 
</ol> 

और निम्न स्क्रिप्ट

$(".ListItem").click(function(){ 
doActionA(); 
}); 

$(".deleteIcon").click(function(){ 
doActionB(); 
}); 

जब मैं छवि में क्लिक करें, यह भी ListItem के क्लिक से चलाता है निम्नलिखित है। मैं समझता हूं क्योंकि यह छवि ListItem के अंदर है। लेकिन मैं चाहता हूं कि सूची इटिम के क्लिक को छवि पर क्लिक होने पर निकाल दिया जाए। क्या ऐसा करने का कोई तरीका है?

उत्तर

19
$(".deleteIcon").click(function(e){ 
    doActionB(); 
    e.stopPropagation(); 
}); 
+0

यह काम किया! धन्यवाद! –

4

आप event.stopPropagation() उपयोग करने के लिए डोम पेड़ खलबली मचाने वाले से घटना को रोकता है की जरूरत है।

$(".deleteIcon").click(function(event){ 
    event.stopPropagation() 
    doActionA();  
}); 

घटना आप हटाएं आइकन के साथ आबद्ध, ListItem साथ बाध्यकारी माता पिता घटना फायरिंग ताकि आप माता-पिता घटना के लिए प्रचार को रोकने के लिए जब बच्चे घटना का स्रोत है की जरूरत है।

+0

वह जब बच्चे पर क्लिक किया माता-पिता का क्लिक करें घटना को रोकने के लिए चाहता है के रूप में एक पुस्तकालय द्वारा उत्पन्न उन के साथ काम करने के लिए मिला है। क्या आपको नहीं लगता कि 'event.stopPropagation() 'को बच्चे के क्लिक पर जोड़ा जाना चाहिए? –

+0

घटना बाध्यकारी बच्चे बच्चे के लिए घटना ट्रिगर नहीं करेगा। – Adil

+0

मुझे लगता है कि यह करता है, इसे देखें: http://jsfiddle.net/arvind07/WtxLC/ 'event.stopPropagation() ' –

0
$(".deleteIcon").click(function(){ 
    doActionA(); 
    return false; 
}); 
0

उपयोग .one(), JQuery दस्तावेज में निर्देशित के रूप में।

1
$(document).on("click", ".deleteIcon", function() { 
    doActionB(); 
}); 

इस विधि केवल एक ही मैं नेस्टेड तत्वों, विशेष रूप से इस तरह के PivotTable (https://github.com/nicolaskruchten/pivottable)

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