jQuery animate + =和最新版本

时间:2013-05-29 16:51:00

标签: jquery jquery-animate

每次单击div“blue”时,它都会移动100px。它工作得很好,有一天我意识到它停止了工作。在尝试了很多东西之后,我发现问题出在最新版本的jQuery 1.10现在它只移动100px一次。这是因为它忽略了+ =。我找不到它是否被弃用?如果是这样,现在这样做的正确方法是什么?

你可以看到它在这里工作:http://jsfiddle.net/RB4eJ/1/
(这在jQuery 1.9.1中有效。但它不在1.10中)

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

3 个答案:

答案 0 :(得分:8)

如果它是一个错误,我希望他们修复它,因为它很有用。但是现在你可以这样做:

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

或者@adeneo建议:

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

<强> See working demo with jQuery 2.x

<强> Performance test

答案 1 :(得分:0)

使用+=-=时,它看起来像动画中的错误。该错误似乎在行

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

以下是代码参考,

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

更改以上内容应修复错误

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

使用小提琴进行测试: http://jsfiddle.net/xEhuR/ [查看第8878行]

注意:好吧,上面的内容并不比识别问题好多少。你应该坚持一个变通方法,或者等到jQuery修复。

张贴在机票http://bugs.jquery.com/ticket/13939?comment:10#comment:10

答案 2 :(得分:0)