2011-06-11 12 views
5

Estoy usando jQuery para animar un cambio de altura al desplazar el mouse().La animación de jQuery dentro del control deslizante() solo se activa en la segunda vez

Al pasar el mouse, se aplicará una clase .hover, y al hacer clic, alternará una clase .expanded. En su mayoría funciona, con la animación adecuada, pero solo después de la primera vez. La primera vez que se pase el mouse saltará la animación por completo.

Estoy confundido - aquí está el código erróneo:

$('#expandingbox').hover(

    /*on mouseenter, if not expanded, add hover class*/ 
    function() { 
    if (!$(this).hasClass("expanded")) { 
     $(this).stop(true, true).addClass("hover", "slow"); 
    }}, 

    /*on mouseout, if not expanded, remove hover class*/ 
    function() { 
    if (!$(this).hasClass("expanded")) { 
     $(this).stop(true, true).removeClass("hover", "slow"); 
    } 
}).click(function() { 
    $(this).toggleClass("expanded", "slow"); 
}); 

He encontrado en alguna parte que la adición de $ ('# expandingbox') del gatillo ('mouseout') van a resolver ese problema, pero no lo hizo. trabaja para mi. Y aquí es un ejemplo que reproduce el problema: http://jsfiddle.net/Qc42v/


ACTUALIZACIÓN: envió el ticket, y resulta que es un error jQuery. El mismo código funciona con jQuery 1.5 (y la última versión de jQuery UI).

+0

¿Ha considerado usar el [animate] (http://api.jquery.com/animate/)? – ngen

+0

@ngen Creo que debería ir con lo que funciona, usaré animate() por ahora y archivaré un error, como sugirió @pixelfreak. – joseph

Respuesta

2

Esto podría ser un error legítimo de jQuery UI. Agregar una clase aleatoria de antemano parece arreglarlo para mí. Compruebe: http://jsfiddle.net/Qc42v/9/

Así que básicamente lo siguiente:

/*on mouseenter, if not expanded, add hover class*/ 
function() { 
if (!$(this).hasClass("expanded")) { 
    $(this).addClass("xxx"); 
    $(this).stop(true, true).addClass("hover", "slow"); 
}}, 

Si esto parece demasiado asqueroso para usted, tal vez sólo tiene que utilizar la función() animado básica? Sin embargo, alguien definitivamente debe presentar un error: {

+0

¡No puedo creer que funcione! ¿Cómo piensas en hacer eso? Creo que archivaré un error y probaré la animación(). Nunca lo he usado, así que ya era hora de que lo aprendiera, ¡supongo! ¡Gracias! – joseph

+0

Solo instinto dev, supongo :) ¡De nada! – pixelfreak

Cuestiones relacionadas