Foros del Web » Programando para Internet » Jquery »

jquery, diferenciar click en fondo, de elementos internos

Estas en el tema de jquery, diferenciar click en fondo, de elementos internos en el foro de Jquery en Foros del Web. Holaaa sí, un poco raro el título del mensaje.. a ver si alguien ha querido hacer algo así alguna vez o sabe orientarme por dónde ...
  #1 (permalink)  
Antiguo 06/10/2010, 05:01
 
Fecha de Ingreso: octubre-2008
Mensajes: 69
Antigüedad: 15 años, 6 meses
Puntos: 1
Pregunta jquery, diferenciar click en fondo, de elementos internos

Holaaa

sí, un poco raro el título del mensaje.. a ver si alguien ha querido hacer algo así alguna vez o sabe orientarme por dónde tirar, porque no se me ocurre nada...

Tengo una tabla, y quiero que cuando haces clic en una fila, se ejecute una función. La cuestión es que en la fila evidentemente tiene imágenes, enlaces, etc. y quiero que la función únicamente se ejecute cuando hago clic en una zona dónde no hay nada de la fila, porque si no, la función se ejecuta, por ejemplo cuando le das a un enlace...

¿alguna idea? ¿algún evento que desconezco.. ?

Gracias!
  #2 (permalink)  
Antiguo 06/10/2010, 07:42
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: jquery, diferenciar click en fondo, de elementos internos

Para empezar, podes usar un selector $("tr") con el evento click. No creo que al pulsar en enlace se ejectute prioritariamente el evento click. Pero de cualquiera manera, si queres evitar elementos, usá :not

http://api.jquery.com/not-selector/

http://api.jquery.com/not/
  #3 (permalink)  
Antiguo 06/10/2010, 08:01
 
Fecha de Ingreso: octubre-2008
Mensajes: 69
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: jquery, diferenciar click en fondo, de elementos internos

Hola,

Lo del $("tr") fue lo primero que probé ;) .. pero sí que salta el evento cuando le das a los enlaces que hay dentro ..

Esto del not-selector no lo conocía, gracias! voy a echarle un ojo ahora mismo.. :)
  #4 (permalink)  
Antiguo 06/10/2010, 09:01
 
Fecha de Ingreso: octubre-2008
Mensajes: 69
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: jquery, diferenciar click en fondo, de elementos internos

Hola otra vez... creo que el "not" no es la solución, o por lo menos no he sabido cómo..

Lo que busco es que cuando hagas clic encima del "span" no salte el evento click del "div" que lo contiene.. en mi caso estoy con una tabla.. pero el concepto supongo que es el mismo..

Código:
     <script type="text/javascript">
        $(document).ready(function() {
            $("#prueba").click(function() {
                alert("has hecho click");
            });                
        });
    </script>
Código HTML:
 <div id="prueba" style="background:red">
        <span style="background:yellow">hola</span>
    </div> 
He probado cosas tipo meter el click dentro de un mouseover.. y demás.. pero por ahora no lo he conseguido..
  #5 (permalink)  
Antiguo 06/10/2010, 10:12
 
Fecha de Ingreso: octubre-2008
Ubicación: Plasencia
Mensajes: 109
Antigüedad: 15 años, 6 meses
Puntos: 6
Respuesta: jquery, diferenciar click en fondo, de elementos internos

No se si entiendo muy bien lo que quieres, si lo que quieres es que la función se ejecute cuando hagas click en un td pero no cuando hagas click en un elemento contenido dentro de ese td la solución es aplicar un manejador para el evento click de la tabla de la siguiente manera:

Código Javascript:
Ver original
  1. $("table").click(function(e){
  2.     var t=$(e.target);
  3.     if(t.is("table > tr > td"))
  4.         // llamas a la función que quieres ejecutar
  5.     else
  6.         return false; // si quieres evitar propagación y comportamientos por defecto
  7. });

Espero te sirva.

Saludos
  #6 (permalink)  
Antiguo 06/10/2010, 14:44
 
Fecha de Ingreso: octubre-2008
Mensajes: 69
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: jquery, diferenciar click en fondo, de elementos internos

Hola

Pues siiiiiiiiiii, bueno, al final he modificado un poco el código, el segundo selector t.is("table > tr > td") lo he dejado así: t.is("td") porque si no no funcionaba, pero era eso exactamente lo que estaba buscando :)

Muchas gracias a los dos

Etiquetas: elementos, fondo, internos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:08.