Foros del Web » Programando para Internet » Javascript »

onclick en div que está dentro de otra div con onclick

Estas en el tema de onclick en div que está dentro de otra div con onclick en el foro de Javascript en Foros del Web. Hola, buenas! Estoy teniendo problemas con algo que supongo que es muy sencillo pero no consigo solucionar. Tengo el codigo siguiente: <div id="capaExperior" onclick="funcion1()"> <div ...
  #1 (permalink)  
Antiguo 21/04/2010, 03:27
 
Fecha de Ingreso: noviembre-2002
Mensajes: 224
Antigüedad: 21 años, 5 meses
Puntos: 1
onclick en div que está dentro de otra div con onclick

Hola, buenas!

Estoy teniendo problemas con algo que supongo que es muy sencillo pero no consigo solucionar.

Tengo el codigo siguiente:

<div id="capaExperior" onclick="funcion1()">
<div id="capaInterior" onclick="funcion2()"></div>
</div>

El problema viene cuando hago click en capaInterior, se ejecuta la funcion2, pero tambien la funcion1, y lo que quiero es que cuando hagan click en capaInterior unicamente se ejecute funcion2, y si hacen click en una zona de capaExterior que no esté ocupando la capaInterior entonces sí debe ejecutar funcion1. De hecho, debería comportarse así, no? Me pasa tanto en Firefox como en IE....

Ah! un inciso, capaInterior no es transparente, tiene background... por eso no entiendo que pasa...

A ver si algun gurú de por aquí puede ayudarme
Gracias!!
  #2 (permalink)  
Antiguo 21/04/2010, 08:05
 
Fecha de Ingreso: mayo-2005
Mensajes: 15
Antigüedad: 18 años, 11 meses
Puntos: 0
Respuesta: onclick en div que está dentro de otra div con onclick

pon los css
  #3 (permalink)  
Antiguo 21/04/2010, 08:18
Avatar de Tecna  
Fecha de Ingreso: enero-2010
Mensajes: 291
Antigüedad: 14 años, 3 meses
Puntos: 45
Respuesta: onclick en div que está dentro de otra div con onclick

Buenas,

lo que te está pasando no tiene nada que ver con que tenga background o sea transparente ni con la hoja de estilos, y su comportamiento es el correcto de acuerdo al modelo del DOM puesto que muchos eventos se propagan en sus distintas fases desde y hasta el elemento document, desde y hasta el elemento que lanzó el evento. Para evitar la propagación del evento habría que usar el método stopPropagation() y en el caso de onclick también deberías cancelar la acción predeterminada asociada al evento, que podría ser seguir un vínculo por ejemplo, usando preventDefault()
  #4 (permalink)  
Antiguo 21/04/2010, 09:16
 
Fecha de Ingreso: noviembre-2002
Mensajes: 224
Antigüedad: 21 años, 5 meses
Puntos: 1
Respuesta: onclick en div que está dentro de otra div con onclick

Muchisimas gracias por tu ayuda.
No sabía de la existencia de este método, o almenos no me acordaba yo...

Puse lo siguiente y se ha solucionado:

var e=window.event||arguments.callee.caller.arguments[0];
e.cancelBubble=true;
if (e.stopPropagation) e.stopPropagation();



P.D. acabo de ver que en IE no tira... voy a investigar....

Y aquí la solución, como tu bien decias, con preventDefault:

var e=window.event||arguments.callee.caller.arguments[0];
e.cancelBubble = true;
e.returnValue = false;
if (e.stopPropagation) e.stopPropagation();
if (e.preventDefault) e.preventDefault();

Última edición por debspain; 21/04/2010 a las 09:32
  #5 (permalink)  
Antiguo 21/04/2010, 09:56
Avatar de Tecna  
Fecha de Ingreso: enero-2010
Mensajes: 291
Antigüedad: 14 años, 3 meses
Puntos: 45
Respuesta: onclick en div que está dentro de otra div con onclick

Buenas,

de nada, me alegra que te haya servido de recordatorio y mas aún que hayas sido capaz de conseguirlo por ti mismo.

Por curiosidad, ¿qué significa el deb de tu nick? ¿podría ser por debian?

Etiquetas: onclick
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 21:58.