2011-06-24 14 views
7

He código HTML siguiente:de los padres Anulación de evento de clic Elemento secundario

<table> 
    <tr> 
     <td><div>test</div></td> 
     <td>Some Text</td> 
    </tr> 
</table> 

usando jQuery, tengo algo de código que se ejecuta cuando el usuario haga clic en el elemento TR. Funciona bien.

Sin embargo, cuando alguien hace clic en el DIV dentro del elemento TD, solo deseo el evento "clic" del DIV y no el evento TR "click" del padre.

¿Cómo puedo hacer eso?

Gracias de antemano!

Respuesta

8

uso stopPropagation:

$(function() { 
    $('tr').bind('click', function (e) { 
     console.log('tr'); 
    }); 
    $('div').bind('click', function(e) { 
     e.stopPropagation(); 
     console.log('div'); 
    }); 

});

jsfiddle

1

Use evt.stopPropagation en su controlador click.

+1

'preventDefault()' no impide la propagación de eventos. –

+1

@ Šime Vidas: Maldición, leyó mal la pregunta ... – Ryan

2

Event.stopImmediatePropagation() trabajó para mí :)

+0

Esto no proporciona una respuesta a la pregunta. Para criticar o solicitar aclaraciones de un autor, deje un comentario debajo de su publicación; siempre puede comentar sus propias publicaciones, y una vez que tenga suficiente [reputación] (http://stackoverflow.com/help/whats-reputation) lo hará poder [comentar cualquier publicación] (http://stackoverflow.com/help/privileges/comment). – Barranka

+1

No he podido agregar ningún comentario sobre las respuestas anteriores ya que esas no son mis respuestas. evt.stopPropagation() no funcionó para mí, mientras que event.stopImmediatePropagation() lo hizo, es por eso que siento que vale la pena compartir esto con otros :) –

Cuestiones relacionadas