Foros del Web » Creando para Internet » HTML »

Evitar que se expanda div expandible al clicar un link dentro

Estas en el tema de Evitar que se expanda div expandible al clicar un link dentro en el foro de HTML en Foros del Web. Hola, Me ha quedado el titulo un poco largo pero no se me ocurria una forma mas sintetica de resumirlo. Basicamente tengo un div sobre ...
  #1 (permalink)  
Antiguo 28/02/2013, 07:39
 
Fecha de Ingreso: abril-2004
Ubicación: Valencia
Mensajes: 436
Antigüedad: 20 años, 6 meses
Puntos: 8
Evitar que se expanda div expandible al clicar un link dentro

Hola,

Me ha quedado el titulo un poco largo pero no se me ocurria una forma mas sintetica de resumirlo.
Basicamente tengo un div sobre el cual se puede clicar, y al hacerlo se expande con toda una serie de informaciones dentro. Necesito que esto ocurra al clicar en cualquier lugar del div (lo cual logicamente ya he conseguido) excepto al clicar en un link que hay dentro del div, en cuyo caso me gustaria que simplemente se siguiera el link sin ningun tipo de efecto jquery. Actualmente lo que ocurre es que al clicar sobre el link que esta dentro del div, se salta a la pagina destino del enlace, pero unas milesimas de segundo antes de saltar a la pagina destino se expande el div con la informacion en su interior produciendo un efecto visual que no me gusta.

La pregunta es, ¿como podria conseguir que al clicar en el enlace que esta dentro del div expandible por jquery, se omita la accion de expansion que le he asignado a ese div para que simplemente se siga el enlace hacia la pagina de destino?

Muchas gracias de antemano.

Un saludo.
  #2 (permalink)  
Antiguo 28/02/2013, 09:53
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 8 meses
Puntos: 1146
Respuesta: Evitar que se expanda div expandible al clicar un link dentro

Tienes que sacar el enlace de ese DIV, como comentaste el jquery afecta a todo el div y por ende todo su contenido... así que tu solución es sacar el link o bien tolerar el efecto visual y aguantarte.
  #3 (permalink)  
Antiguo 28/02/2013, 15:47
 
Fecha de Ingreso: abril-2004
Ubicación: Valencia
Mensajes: 436
Antigüedad: 20 años, 6 meses
Puntos: 8
Respuesta: Evitar que se expanda div expandible al clicar un link dentro

Vaya, pensé que se podría. Me parece raro que no se pueda discernir entre elementos ya que lo que estoy diciendo es bastante comun. Por ejemplo al clicar en el div se expande con un texto en sus interior, al clicar de nuevo se contrae. Pero y si ese texto contiene algun enlace que queremos que cumpla su funcion normal? Yo diría que debe de existir alguna forma de hacerlo.
Pongo un ejemplo. En twitter al hacer click en cualquier punto del tweet, este se expande. No obstante, si el tweet contiene un enlace y hacemos click en este, se irá a la pagina de destino del enlace sin que el tweet se expanda. Algo así es lo que necesitaría.
  #4 (permalink)  
Antiguo 28/02/2013, 22:34
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 8 meses
Puntos: 1146
Respuesta: Evitar que se expanda div expandible al clicar un link dentro

vamos, sin ver tu código yo estoy especulando al suponer que el jquery esta afectando directamente a tu div... lo que yo haría es en lugar de afectar al div afectar a los elementos en su interior con excepción del enlace en cuestión, eso es lo que la mayoría haría quiero pensar yo.... aunque puede que me equivoque y exista algún método que no este contemplando al responderte.
  #5 (permalink)  
Antiguo 01/03/2013, 13:07
Avatar de Tecna  
Fecha de Ingreso: enero-2010
Mensajes: 291
Antigüedad: 14 años, 10 meses
Puntos: 45
Respuesta: Evitar que se expanda div expandible al clicar un link dentro

Buenas,

lo que describes en tu primer mensaje es el comportamiento normal para la mayoría de eventos, primero se propaga y después se hace la acción predeterminada. Tu has definido un evento click para el elemento div y la acción predeterminada de los enlaces también se maneja con este evento. Al propagarse el evento del enlace está haciendo que se ejecute también el controlador que has definido para el div y hace que se expanda. Una vez terminada la fase de propagación se ejecuta la acción predeterminada y sigue el enlace. Para evitar esto se usa el método stopPropagation()
  #6 (permalink)  
Antiguo 05/03/2013, 05:56
 
Fecha de Ingreso: abril-2004
Ubicación: Valencia
Mensajes: 436
Antigüedad: 20 años, 6 meses
Puntos: 8
Respuesta: Evitar que se expanda div expandible al clicar un link dentro

Hola Tecna,

muchas gracias por tu respuesta. Por lo que entiendo en lo que dices, usar ese metodo me permitiría evitar la acción predeterminada del link, es decir evitar avanzar hacia la landing page, pero yo justamente lo que quiero es lo contrario, es decir, evitar la acción que he descrito para el div en el caso en que clique en el link, y que solo se ejecute la accion predeterminada del link. Quiza podría describir un evento para el link en jquery y al final de su ejecucion (es decir avanzar hacia la landing page) ejecutar stopPropagation() como dices para que no se ejecute la accion definida para el div. Crees que esto podria funcionar?
Muchas gracias por tu ayuda.

Saludos.
  #7 (permalink)  
Antiguo 05/03/2013, 09:35
Avatar de Tecna  
Fecha de Ingreso: enero-2010
Mensajes: 291
Antigüedad: 14 años, 10 meses
Puntos: 45
Respuesta: Evitar que se expanda div expandible al clicar un link dentro

Buenas,

parece que lo has entendido todo al revés:

primero se propaga el evento y después se hace la acción predeterminada. No sirve de nada llamar a stopPropagation() después de que se ejecute la acción porque la fase de propagación ya habría concluído mucho antes, no habría nada que parar y en este caso ya estarías en otra página. Justo hay que hacerlo al revés, primero evitar que se propague y luego seguir el enlace.

El problema está en la propagación del evento y para eso es para lo que se usa stopPropagation(). Para evitar que se ejecute la acción predeterminada habría que cancelar el evento pero esa no era la pregunta.
  #8 (permalink)  
Antiguo 05/03/2013, 09:57
Avatar de Reedyseth  
Fecha de Ingreso: enero-2009
Ubicación: Chihuahua, México
Mensajes: 419
Antigüedad: 15 años, 9 meses
Puntos: 36
Respuesta: Evitar que se expanda div expandible al clicar un link dentro

Tecna tiene toda la razon cnyx, pero si aun con esto te quedan dudas puedes leer un poco hacerca de algo que le llaman en ingles "Capturing and bubbling" para que entiendas mas sobre como es que se propagan los eventos en un DOM.
__________________
Reedyseth
Te ayudo? No olvides dar un +
blog:http://behstant.com/blog
En el blog:Tutoriales de Desarrollo Web PHP, Javascript, BD y más.
  #9 (permalink)  
Antiguo 05/03/2013, 11:27
 
Fecha de Ingreso: abril-2004
Ubicación: Valencia
Mensajes: 436
Antigüedad: 20 años, 6 meses
Puntos: 8
Respuesta: Evitar que se expanda div expandible al clicar un link dentro

Hola de nuevo y gracias a ambos por la respuesta.

Tecna tenias razón, lo habia entendido al reves. De hecho despues de implementarlo tal y como has dicho ha funcionado correctamente con una exceptio:
Si clico el link antes de haber expandido el div, funciona como debe. Sin embargo si he expandido o colapsado el div una sola vez, al clicar sobre el link ya no funciona y simplemente sigue ejecutando la accion definida para el div, pero no se sigue el enlace. Se os ocurre a que puede deberse este comportamiento?

Saludos.

Etiquetas: jquery
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 05:10.