2010-08-11 13 views
8

ich habe Struktur wie diesejquery - Deaktivieren Klickfunktion auf Elternelement

<table><tr><td></td><td><input type="button" name="button"></td></tr></table> 
<script> 
$('tr').click(function(){window.alert('tr');}) 
$(':input').click(function(){window.alert('input');}) 
</script> 

, wenn ich auf den Button klicken, Ereignis tr klicken auch genannt wird. Gibt es eine Möglichkeit, Klickereignis für Elternelement zu deaktivieren? Die einzige Lösung, die ich gefunden habe, ist, Klasse zum Elternelement hinzuzufügen und innerhalb seiner Klickfunktion nach ihr zu suchen. zum Beispiel:

<script> 
$('tr').click(function(){ if(!$(this).hasClass('disable')) { window.alert('tr'); } $(this).removeClass('disable'); }) 
$(':input').click(function(){window.alert('input'); $(this).closest('tr').addClass('disable');}) 
</script> 
+0

Ich hatte genau das gleiche Problem, und es ist überraschend Lösung schwer zu finden ist. Vielen Dank, dass Sie diese Frage gestellt haben und allen Beantwortern für ihren Beitrag. – MOnsDaR

Antwort

14

Verwendung .stopPropagation()

$('tr').click(function(){ 
    window.alert('tr'); 
}); 
$(':input').click(function(e){ 
    e.stopPropagation(); 
    window.alert('input'); 
}); 

demo

+0

schien, als ob es zu einfach war, aber funktioniert wie ein Charme. –

+0

+1, siehe Kommentar zu Frage – MOnsDaR

3

.stopPropagation() würde funktionieren, aber wenn Sie nicht das gesamte Ereignis anhalten möchten, können Sie es einfach auslösen, wenn die Ziele übereinstimmen.

See this thread.

Verwandte Themen