2013-03-25 34 views
0

后,我有以下的jQuery代码jQuery的检查右位置动画结束

$('.sidebar-address').animate({ 
    'right' : "+=500px" 
}); 

var sideBarPos = $('.sidebar-address').css('right'); 
console.log(sideBarPos); 

我想检查位置的动画结束后,但-500px每次返回,而不是应该给我值0

+0

将一个超时设置为console.log以查看它是在动画之前还是之后开始。 – 2013-03-25 16:27:46

+0

内联(通过animate添加)和外部CSS值的权利值是多少? – 2013-03-25 16:30:49

回答

1

您需要的动画后,检查完毕,所以你需要把它放在动画的回调,如:

$('.sidebar-address').animate({ 
    'right' : "+=500px" 
},function(){ 
    var sideBarPos = $(this).css('right'); 
    console.log(sideBarPos); 
}); 

jsFiddle example

否则您的代码在动画完成前正在运行。

0

你有两种可能性。为您的console.log和变量创建一个setTimeout函数,或者将其放入动画的回调函数中。

将代码放在回调中的示例(最佳解决方案)。

$('.sidebar-address').animate({ 
    'right' : "+=500px" 
},function(){ 
    var sideBarPos = $('.sidebar-address').css('right'); 
    console.log(sideBarPos); 
}); 

示例使用setTimeout的,只是为了测试你的动画的结果:

$('.sidebar-address').animate({ 
    'right' : "+=500px" 
}); 

setTimeout(function() { 
    var sideBarPos = $('.sidebar-address').css('right'); 
    console.log(sideBarPos); 
}, 1000); // if animation is 900, put 1000. 
0

在它之前显示的动画已经完成,你可以添加代码回调的情况下。

$('.sidebar-address').animate({ 
    'right' : "+=500px" 
}, ANIMATION-TIME, function() { 
    console.log($(this).css('right')); 
);