Foros del Web » Programando para Internet » Jquery »

[SOLUCIONADO] mouseover y mouseout

Estas en el tema de mouseover y mouseout en el foro de Jquery en Foros del Web. Buenos dias Tengo por un lado 45 divs con ids del 1 al 45 (se que no se recomienda nombrar los divs solo con numeros ...
  #1 (permalink)  
Antiguo 19/05/2013, 06:35
Avatar de superlopez5  
Fecha de Ingreso: abril-2013
Ubicación: barcelona
Mensajes: 8
Antigüedad: 11 años, 8 meses
Puntos: 0
mouseover y mouseout

Buenos dias

Tengo por un lado 45 divs con ids del 1 al 45 (se que no se recomienda nombrar los divs solo con numeros pero de momento no tengo otra opcion), y por otro lado tengo 45 divs nombrados con ids position1, position2,....,position45. cuando pongo el mouse en el div1 se tiene que mostrar el div position1, cuando pongo el mouse en el div 2 se muestra el div position2, etc....

$(document).ready(function() {

for(var i = 1; i < 46; i++){

$("#" + "position" + i).hide();

$("#" + i).mouseover(function(){
$("#" + "position" + i).show();

}).mouseout(function(){
$("#" + "position" + i).hide();
});

}
});

Si pongo este codigo sin el bucle for me funciona perfecto pero a la que pongo el bucle ya no me funciona.

¿Alguien sabría la solución?
Muchas gracias!
  #2 (permalink)  
Antiguo 19/05/2013, 07:27
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años, 7 meses
Puntos: 344
Respuesta: mouseover y mouseout

Buenas,

Es un problema muy común en javascript y se produce por no tener claro el ámbito de las variables en javascript.

Te paso un enlace (en inglés) que explica todo sobre esto (incluso el problema que estás teniendo): http://robertnyman.com/2008/10/09/ex...-and-closures/


Puedes encontrar también información en castellano si buscas en google.

Te dejo el código como debería ser para que te funcione:

Código Javascript:
Ver original
  1. $(document).ready(function()
  2. {
  3.     for(var i = 1; i < 5; i++)
  4.     {                  
  5.         $("#" + "position" + i).hide();
  6.          
  7.         (function(index)
  8.         {
  9.            $("#" + index).mouseover(function()
  10.                                  {
  11.                                      $("#" + "position" + index).show();
  12.                                  })
  13.             .mouseout(function()
  14.                       {
  15.                           $("#" + "position" + index).hide();
  16.                       });
  17.                      
  18.         })(i);        
  19.     }
  20. });

Un saludo.
  #3 (permalink)  
Antiguo 19/05/2013, 07:58
Avatar de superlopez5  
Fecha de Ingreso: abril-2013
Ubicación: barcelona
Mensajes: 8
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: mouseover y mouseout

Gracias por la respuesta
Interesante el enlace. Pero sigo sin lograr que funcione...

en los ejemplos del enlace utilizan el return function (), ¿deberia utilzarlo en mi codigo para que funcione?
  #4 (permalink)  
Antiguo 19/05/2013, 08:03
Avatar de superlopez5  
Fecha de Ingreso: abril-2013
Ubicación: barcelona
Mensajes: 8
Antigüedad: 11 años, 8 meses
Puntos: 0
De acuerdo Respuesta: mouseover y mouseout

Si que funciona, perdón , tenía un error de sintaxis al copiarlo

Muchas gracias de verdad por su ayuda. leeré más sobre este tema

Etiquetas: mouseout, mouseover
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 07:38.