2013-05-29 30 views
18

Ogni volta che faccio clic sul div "blu" si sposta di 100 px. Ha funzionato bene e un giorno mi rendo conto che ha smesso di funzionare. Dopo aver provato un sacco di cose ho scoperto che il problema è con l'ultima versione di jQuery 1.10 Ora si sposta di 100px una volta sola. È come ignora il + =. Non sono riuscito a trovare se è deprecato? Se è così, qual è il modo giusto per farlo ora?jQuery animate + = e ultima versione

si vedeva lavorare qui: http://jsfiddle.net/RB4eJ/1/
(Questo è il lavoro in jQuery 1.9.1, ma non è in 1.10.)

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

stesso problema per JQ 2.x –

+3

alcuni altri hanno anche riferito questo http://blog.jquery.com/2013/05/24/jquery-1-10-0-and-2-0-1-released/ – Sachin

+0

Ho letto il log delle modifiche e non c'è alcuna nota sull'animazione così sembra essere b ug. – WooCaSh

risposta

8

Se si tratta di un bug spero che risolvere il problema perché è stato utile Tuttavia, per ora si può fare qualcosa di simile:

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

O come @adeneo suggerito:

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

See working demo with jQuery 2.x

Performance test

+6

O semplicemente '$ (this) .animate ({left: $ (this) .position () .left + 100}, 500) ' – adeneo

+0

@adeneo ty. in questo modo è meglio – letiagoalves

+2

http://jsperf.com/jquery-animate –

0

Sembra un bug in animare quando si utilizza += oppure -=. Il bug sembra in linea

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

Di seguito si riporta il riferimento codice,

// 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 ]; 

cambiare quanto sopra dovrebbe risolvere il bug,

// 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 ]; 

Fix testato con violino:http://jsfiddle.net/xEhuR/ [check line 8878]

Nota: Bene, quanto sopra non consente molto di identificare il problema. È necessario attenersi a una soluzione alternativa o attendere una correzione da jQuery.

Pubblicato in biglietto http://bugs.jquery.com/ticket/13939?comment:10#comment:10

+0

sarebbe bello se si crea un nuovo ticket nel bug tracker jQuery con la soluzione. Può accelerare la correzione – letiagoalves

+0

@letiagoalves Pubblicato nel ticket http://bugs.jquery.com/ticket/13939?replyto=10#comment:10 –

+0

@letiagoalves http://bugs.jquery.com/ticket/13939?comment : 10 # commento: 11 - già risolto –