jQuery animate + =和最新版本

Nrc*_*Nrc 18 jquery jquery-animate

每次我点击div"蓝色"它移动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)    
    });
})
Run Code Online (Sandbox Code Playgroud)

let*_*ves 8

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

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

或者@adeneo建议:

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

请参阅jQuery 2.x的工作演示

性能测试

  • 或者只是`$(this).animate({left:$(this).position().left + 100},500)` (6认同)
  • 改变了我的想法,`offset()`将适用于这个例子,因为它相对于文档,但`position()`应该真正用作相对于父亲的那个,就像CSS离开通常与位置相对或绝对. (3认同)