2013-01-08 14 views
8

Mam następujący znacznikówjQuery: klikający elementy zagnieżdżone

<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> 

i następnego skryptu

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

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

Po kliknięciu w obrazek, ale także wywołuje kliknięcie ListItem. Rozumiem, że dzieje się tak dlatego, że obraz znajduje się wewnątrz ListItem. ale chcę, aby kliknięcie ListItem nie było uruchamiane po kliknięciu obrazu. Czy jest jakiś sposób to zrobić?

Odpowiedz

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

To zadziałało! Dzięki! –

4

Musisz użyć event.stopPropagation(), aby zapobiec propagacji zdarzenia w drzewie DOM.

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

Impreza ty zbindowanych z ikonie Usuń jest wypalania zdarzenie nadrzędnej wiązania z ListItem, więc trzeba zatrzymać propagacji dla zdarzenia dominującej gdy dziecko jest źródłem zdarzenia.

+0

chce zapobiec zdarzenia Click rodzica po kliknięciu na dziecko. Czy nie uważasz, że 'event.stopPropagation()' powinno zostać dodane do kliknięcia dziecka? –

+0

Powiązanie zdarzenia spowoduje, że element potomny nie wywoła zdarzenia dla elementu nadrzędnego. – Adil

+0

Myślę, że tak, spójrz na to: http://jsfiddle.net/arvind07/WtxLC/ Spróbuj komentować 'event.stopPropagation()' –

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

Zastosowanie .one(), w sposób opisany w dokumentacji JQuery.

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

Ta metoda jest tylko jeden znalazłem pracę z elementów zagnieżdżonych, zwłaszcza generowane przez biblioteki takie jak tabel przestawnych (https://github.com/nicolaskruchten/pivottable)

Powiązane problemy