rotate ejemplos animate jquery jquery-animate

ejemplos - jQuery animate+= y la última versión



jquery show effects (3)

Esto fue realmente un error en la versión 1.10.0 y se corrigió en 1.10.1

blog.jquery.com/2013/05/30/jquery-1-10-1-and-2-0-2-released

http://bugs.jquery.com/ticket/13939

Cada vez que hago clic en el div "azul" se mueve 100px. Funcionó bien y un día me di cuenta de que había dejado de funcionar. Después de probar muchas cosas, descubrí que el problema está en la última versión de jQuery 1.10. Ahora solo mueve 100px una vez. Es como ignora el + =. ¿No pude encontrar si está en desuso? Si es así, ¿cuál es la forma correcta de hacerlo ahora?

Se podría ver trabajando aquí: http://jsfiddle.net/RB4eJ/1/
(Esto está funcionando en jQuery 1.9.1. Pero no está en 1.10)

$(function(){ $(".blue").click(function() { $(".blue").animate({left: "+=100"}, 500) }); })


Parece un error en animate cuando se usa += o -= . El error parece estar en línea

https://github.com/jquery/jquery/blob/master/src/effects.js#L48-L50

A continuación se muestra la referencia del código,

// If a +=/-= token was provided, we''re doing a relative animation tween.end = parts[ 1 ] ? //v--- bug start + ( parts[ 1 ] + 1 ) * parts[ 2 ] : +parts[ 2 ];

cambiando lo anterior debería arreglar el error,

// If a +=/-= token was provided, we''re doing a relative animation tween.end = parts[ 1 ] ? //v-- changed to tween.start tween.start + ( parts[ 1 ] + 1 ) * parts[ 2 ] : +parts[ 2 ];

Arreglo probado con el violín: http://jsfiddle.net/xEhuR/ [línea de verificación 8878]

Nota: Bueno, lo anterior no logra mucho más que identificar el problema. Debería atenerse a una solución o esperar hasta una solución de jQuery.

Publicado en el ticket http://bugs.jquery.com/ticket/13939?comment:10#comment:10


Si es un error espero que lo solucionen porque fue útil. Sin embargo por ahora puedes hacer algo como esto:

$(".blue").click(function() { var new_left = +$(this).css("left").replace("px", "") + 100; $(".blue").animate({left: new_left + "px"}, 500) });

O como @adeneo sugirió:

$(".blue").click(function() { $(this).animate({left: $(this).position().left+100}, 500); });

Ver demostración de trabajo con jQuery 2.x

Prueba de rendimiento