Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Mostrar/ocultar div al hacer un hover

Estas en el tema de Mostrar/ocultar div al hacer un hover en el foro de Javascript en Foros del Web. Buenas tardes! [Edito: Creo que esto habría que moverlo a la categoría jQuery...perdón por el error :D] Quería comentaros una cosa que no consigo realizar ...
  #1 (permalink)  
Antiguo 11/10/2013, 09:41
Avatar de madman_18  
Fecha de Ingreso: agosto-2010
Mensajes: 792
Antigüedad: 14 años, 3 meses
Puntos: 14
Pregunta Mostrar/ocultar div al hacer un hover

Buenas tardes!
[Edito: Creo que esto habría que moverlo a la categoría jQuery...perdón por el error :D]

Quería comentaros una cosa que no consigo realizar

Tengo la siguiente estructura:

Código HTML:
Ver original
  1. div class="tarjeta-producto" id="tarjeta-producto">
  2.                 <ul>
  3.                     <li>
  4.                         <div class='contenido-tarjetaProducto'>
  5.                             <div class='imagen-tarjetaProducto'>
  6.                                 <div class="capaoculta" style="width:100%;height:150px;background:yellow;position:relative;top:88px;display:none;">
  7.                                     holaaa!
  8.                                 </div>
  9.                             </div>
  10.                             <div class='texto-describeProducto'>
  11.                                 <p>Informacion</p>
  12.                             </div>
  13.                         </div>
  14.                     </li>
  15.                     <li>
  16.                         <div class='contenido-tarjetaProducto'>
  17.                             <div class='imagen-tarjetaProducto'>
  18.                                 <div class="capaoculta" style="width:100%;height:150px;background:yellow;position:relative;top:88px;display:none;">
  19.                                     holaaa!
  20.                                 </div>
  21.                             </div>
  22.                             <div class='texto-describeProducto'>
  23.                                 <p>Informacion</p>
  24.                             </div>
  25.                         </div>
  26.                     </li>
  27.                 </ul>
  28.             </div>

Ahora lo que debe hacer es que, cuando pasen con el ratón por encima muestre lo que sería su "capaoculta", el problema está en que cuando lo hago me lo hace en todos (si hago el hover por el primer "li" me muestra su capaoculta y el del siguiente elemento "li")

La cosa está en que he probado en jQuery usar el .each, .find...y siempre obtengo el mismo resultado. Os paso el que tengo actualmente:
Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.         $('#tarjeta-producto ul li').hover(function(){
  3.             if($(this).find('div.capaoculta').length){
  4.                 $('div.capaoculta').toggle('fast');
  5.             }          
  6.         },function(){
  7.             if($(this).find('div.capaoculta').length){
  8.                 $('div.capaoculta').toggle('fast');
  9.             }
  10.         });
  11.            
  12.     });
¿Qué es lo que estoy haciendo mal al buscar el div.capaoculta? En teoría, con el $(this) de la línea if($(this).find('div.capaoculta').length) me sacaría únicamente del elemento en el que estoy haciendo el hover ¿no?

Gracias por la ayuda!
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, te convertes en algo muy diferente"

Última edición por madman_18; 11/10/2013 a las 09:52
  #2 (permalink)  
Antiguo 11/10/2013, 13:52
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 11 años, 2 meses
Puntos: 578
Respuesta: Mostrar/ocultar div al hacer un hover

Falla la condicional... Para qué usas length?
  #3 (permalink)  
Antiguo 14/10/2013, 00:50
Avatar de madman_18  
Fecha de Ingreso: agosto-2010
Mensajes: 792
Antigüedad: 14 años, 3 meses
Puntos: 14
Respuesta: Mostrar/ocultar div al hacer un hover

Cita:
Iniciado por PHPeros Ver Mensaje
Falla la condicional... Para qué usas length?
Si te digo la verdad PHPeros, ha sido un código que había encontrado por google que decía servir para lo mismo que estoy necesitando (mi anterior código tampoco funcionaba...).

La cosa está en que: no puedo cambiar el estilo de la clase al hacer "hover" porque entonces me lo hace en todos los bloques de dicha clase.

Tampoco puedo usar "id" ya que es contenido que genero dinámicamente y puede que haya 1,3,6,7 elementos (tendría que estar asociando por cada bloque un código de javascript)

Entonces no se me ocurre cómo podría realizarlo
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, te convertes en algo muy diferente"
  #4 (permalink)  
Antiguo 14/10/2013, 05:24
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.489
Antigüedad: 22 años, 3 meses
Puntos: 2114
Respuesta: Mostrar/ocultar div al hacer un hover

¿No sería más fácil hacerlo en CSS?

Código CSS:
Ver original
  1. .capaoculta {
  2.   display: none;
  3. }
  4.  
  5. #tarjeta-producto li:hover .capaoculta {
  6.   display: block;
  7. }

Y si quieres animarlo puedes usar transition. Ya le meten JavaScript a todo.
  #5 (permalink)  
Antiguo 14/10/2013, 05:38
Avatar de madman_18  
Fecha de Ingreso: agosto-2010
Mensajes: 792
Antigüedad: 14 años, 3 meses
Puntos: 14
Respuesta: Mostrar/ocultar div al hacer un hover

Cita:
Iniciado por pzin Ver Mensaje
¿No sería más fácil hacerlo en CSS?

Código CSS:
Ver original
  1. .capaoculta {
  2.   display: none;
  3. }
  4.  
  5. #tarjeta-producto li:hover .capaoculta {
  6.   display: block;
  7. }

Y si quieres animarlo puedes usar transition. Ya le meten JavaScript a todo.
pzin sé que se puede hacer con css3 el ocultarlo y meter el efecto, la razón de que no lo use: es por el control de ciertas variables que estoy gestionando las cuales varían de valores según quiera el usuario (según active una opción o no de la página web) y gestiono la capa con su contenido según el valor y su comportamiento de la capa.

De ahí que me sea demasiado "genérico" el uso de css ya que necesito realizar más acciones. :D :D :D
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, te convertes en algo muy diferente"
  #6 (permalink)  
Antiguo 14/10/2013, 07:11
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 11 años, 2 meses
Puntos: 578
Respuesta: Mostrar/ocultar div al hacer un hover

No me he enterado de nada... Añade códigos.
  #7 (permalink)  
Antiguo 14/10/2013, 12:08
Avatar de utan  
Fecha de Ingreso: agosto-2012
Mensajes: 126
Antigüedad: 12 años, 3 meses
Puntos: 17
Respuesta: Mostrar/ocultar div al hacer un hover

Me párese a mi que necesitas hacer delagation en jQuery ,
Código:
$(document).ready(function(){
	var eltoDelegate = $('#tarjeta-producto');
	
    if(eltoDelegate){
		eltoDelegate.delegate( 'div.contenido-tarjetaProducto'  ,  'hover' , function(){
			if( $(this).find('div.capaoculta') ){
				$(this).find('div.capaoculta').toggle('fast');
			}
		});
	}
	
});
Lo que ase es monitoriar el div id #tarjeta-producto por alguna class llamada div.contenido-tarjetaProducto agregandole el evento hove, de allí encuentras tu class escondida..
__________________
Mis conocimientos son limitado, pero si te puedo ayudar lo are gustoso mi chat particular, visitalo gracias http://rendezvouschat.com
  #8 (permalink)  
Antiguo 15/10/2013, 04:51
Avatar de madman_18  
Fecha de Ingreso: agosto-2010
Mensajes: 792
Antigüedad: 14 años, 3 meses
Puntos: 14
Respuesta: Mostrar/ocultar div al hacer un hover

Gracias a todos por las guías, ya lo he conseguido solucionar :) :D era un fallo en la estructura de mi HTML y ya conseguí que funcionase :) :)
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, te convertes en algo muy diferente"

Etiquetas: hover, jquery, mostrar-ocultar
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 17:46.