Foros del Web » Programando para Internet » Jquery »

ocultar una imagen y mostrar otra con jquery

Estas en el tema de ocultar una imagen y mostrar otra con jquery en el foro de Jquery en Foros del Web. tengo xxx cantidad de div cada uno contiene 2 imagenes lo que quiero hacer es que al pasar el mouse por ensima se oculte la ...
  #1 (permalink)  
Antiguo 29/06/2014, 15:57
Avatar de cristo995  
Fecha de Ingreso: noviembre-2012
Mensajes: 187
Antigüedad: 11 años, 5 meses
Puntos: 0
ocultar una imagen y mostrar otra con jquery

tengo xxx cantidad de div cada uno contiene 2 imagenes lo que quiero hacer es que al pasar el mouse por ensima se oculte la img por defecto y se muestre la otra..

ya el htm lo tengo y el css tambien , ala segunda img la oculte con display:none;

por medio de "id" y "class" manejo el efecto asi:

<div class="publicidad">
<img id="none" src="img/tcc-g.png" alt="" class="g">
<img src="img/tcc-c.png" alt="" class="c">
</div>

$('#none').mouseover(function(){
$(this).fadeOut('fast');
$('.c').fadeIn('fast');
});

$('.c').mouseout(function(){
$(this).fadeOut('fast');
$('#none').fadeIn('fast');
});


esto funciona bien con las primeras imagenes del primer div..

el problema es que son muchos div cada uno con 2 img , entonces no le puedo poner el mismo "id" y "class" en todas.. por q al pasar el mouse por ensima de la primera automaticamente todas me toma el efecto

como podria solucionar esto ?
  #2 (permalink)  
Antiguo 29/06/2014, 18:22
Ktulu
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: ocultar una imagen y mostrar otra con jquery

Trabajarlo con la clase sería lo mas conveniente:

Código Javascript:
Ver original
  1. $('.publicidad').on('mouseenter',function(){
  2.    $(this).find('img:visible').hide().siblings('img').show()
  3. })

Saludos!
  #3 (permalink)  
Antiguo 29/06/2014, 19:19
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: ocultar una imagen y mostrar otra con jquery

No es necesario que utilices identificadores únicos, basta con que utilices la clase del contenedor y los métodos de selección de jQuery.

Código Javascript:
Ver original
  1. $(".publicidad").hover(function(){
  2.     $(this).find("img").toggle();
  3. }, function(){
  4.     $(this).find("img").toggle();
  5. });

De esta forma, al posar el cursor sobre cada <div>, buscas a las imágenes que contiene y cambias su visibilidad; si alguna de ellas es visible, dejará de verse y viceversa. Cuando retires el curso del <div>, se producirá el efecto contrario.



Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #4 (permalink)  
Antiguo 29/06/2014, 21:59
Avatar de cristo995  
Fecha de Ingreso: noviembre-2012
Mensajes: 187
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: ocultar una imagen y mostrar otra con jquery

gracias.. funciona perfecto..

pero me quedo con la intriga del "find"

podrias explicarme como es el funcionamiento de este..

tambien me gustaria saber, por que solo funciona bien con toggle - lo intercambie por fadeIn y fadeOut y jmm se me armo un despelote funcionando muy mal..

Última edición por cristo995; 29/06/2014 a las 22:11
  #5 (permalink)  
Antiguo 30/06/2014, 07:32
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: ocultar una imagen y mostrar otra con jquery

El método find lo utilizo para buscar elementos dentro del <div>, es como si hicieras un div.getElementsByTagName("img"). Con respecto a lo segundo, cualquier otro método de efectos hubiera sido útil, solo que el método toggle (y todos los que tienen esa palabra, como slideToggle y fadeToggle) es más práctico para este caso pues cambia la visibilidad del elemento afectado, sin importar si este es visible o no.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: Ninguno
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 08:39.