2013-03-25 35 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')); 
);