Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Query bug

Estas en el tema de Query bug en el foro de Frameworks JS en Foros del Web. Hola en muchas de las funciones de query como por ejemplo fadeIn(), fadeOut(), animate()... cuando por ejemplo pongo en un evento onmouseover la funcion fadeOut(); ...
  #1 (permalink)  
Antiguo 10/09/2012, 16:17
Avatar de patilanz  
Fecha de Ingreso: enero-2012
Mensajes: 880
Antigüedad: 12 años, 10 meses
Puntos: 29
Query bug

Hola en muchas de las funciones de query como por ejemplo fadeIn(), fadeOut(), animate()... cuando por ejemplo pongo en un evento onmouseover la funcion fadeOut(); y en un evento onmouseout la funcion fadeIn(); si sales y entras en el objeto varias veces antes de que se completan las funciones se producen cosas inesperadas ...
Como podia solucionar esto??
Gracias :)
  #2 (permalink)  
Antiguo 11/09/2012, 03:56
 
Fecha de Ingreso: junio-2009
Mensajes: 128
Antigüedad: 15 años, 5 meses
Puntos: 17
Respuesta: Query bug

Eso no es un bug de Jquery,

Lo que pasa que cuando haces el segundo evento (onmouseout) el primero aun sigue ejecutandose (onmouseover) ya que hay un tiempo de ejecución.

Si esperas a que se acabe la animación cuando pones el raton encima y luego lo sacas, veras que si funciona correctamente.

Como evitarlo, con la funcion stop(). Te pongo un ejemplo para que lo veas (se puede usar eventos mejores para la asignación de mouseover, mouseout, pero para que se vea nos vale).

Código:
$("#ti2").mouseenter(function(){
  $("#ptv").stop().animate({ top: -2 },50);
}).mouseleave(function(){
  $("#ptv").stop().animate({ top: 0 },50);
});
Si te fijas, hago una llamada a .stop() antes de llamar a animate, con eso consigo que cualquier animación en la pila de ejecución del objeto, pare radicalmente este donde este, y comience la animación que indico inmediatamente.

Si tienes mas dudas de eso consultanos.

P.D.: te aconsejo que leas tambien sobre el burbujeo de eventos, pues puede darte algun problema de funcionamiento parecido [se ejecutan eventos cuando no deben, actuan arbitrariamente, etc..], pero es algo distinto y se soluciona usando preventDefault() y no stop(). Echale un ojo y que no te pille desprevenido ;).

Un saludo, y espero haberte ayudado.
  #3 (permalink)  
Antiguo 11/09/2012, 05:08
Avatar de patilanz  
Fecha de Ingreso: enero-2012
Mensajes: 880
Antigüedad: 12 años, 10 meses
Puntos: 29
Respuesta: Query bug

Cita:
Iniciado por kikeking1 Ver Mensaje
Eso no es un bug de Jquery,

Lo que pasa que cuando haces el segundo evento (onmouseout) el primero aun sigue ejecutandose (onmouseover) ya que hay un tiempo de ejecución.

Si esperas a que se acabe la animación cuando pones el raton encima y luego lo sacas, veras que si funciona correctamente.

Como evitarlo, con la funcion stop(). Te pongo un ejemplo para que lo veas (se puede usar eventos mejores para la asignación de mouseover, mouseout, pero para que se vea nos vale).

Código:
$("#ti2").mouseenter(function(){
  $("#ptv").stop().animate({ top: -2 },50);
}).mouseleave(function(){
  $("#ptv").stop().animate({ top: 0 },50);
});
Si te fijas, hago una llamada a .stop() antes de llamar a animate, con eso consigo que cualquier animación en la pila de ejecución del objeto, pare radicalmente este donde este, y comience la animación que indico inmediatamente.

Si tienes mas dudas de eso consultanos.

P.D.: te aconsejo que leas tambien sobre el burbujeo de eventos, pues puede darte algun problema de funcionamiento parecido [se ejecutan eventos cuando no deben, actuan arbitrariamente, etc..], pero es algo distinto y se soluciona usando preventDefault() y no stop(). Echale un ojo y que no te pille desprevenido ;).

Un saludo, y espero haberte ayudado.
Gracias lo probe y funciona con animate pero con show() y hide() no funciona bien...
Un saludo
  #4 (permalink)  
Antiguo 11/09/2012, 08:24
 
Fecha de Ingreso: junio-2009
Mensajes: 128
Antigüedad: 15 años, 5 meses
Puntos: 17
Respuesta: Query bug

stop() acepta dos parmetros boleanos (true/false) para determinar de que forma se detiene la animación.

para show/hide, debes indicarle una parada completa [no solo de la cola] por lo que debes pasarle stop(true,true);

Los compañeros de desarrollo web hicieron una documentación sobre esto en español (se que aveces cuesta leer la oficial, yo tampoco soy muy bueno en ingles) bastante clara que seguramente te sirva bastante. Echale un vistazo y si aun tienes dudas, pues sigue preguntando.

http://www.desarrolloweb.com/articul...os-jquery.html

Un saludo.

Etiquetas: bug, javascript, query
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 13:11.