2012-04-25 48 views
2

我從股利點擊獲取方向和,試圖將此傳遞到動畫功能jQuery的傳遞方向動畫()

var direction = $(this).attr('class').split(' ')[1]; 
var scrollAmount = 285; 
$('#slider').animate({direction:'-=' + scrollAmount}, 'slow'); 

有什麼不對?

由於

回答

2

動畫函數的第一個參數需要在CSS屬性中聲明動畫結尾的最終屬性。你不能以這種方式傳遞方向。這聽起來像你要麼設置左或scrollLeft的金額,並改變方向,那麼你應該看看方向的價值,並使用 - =或+ =取決於你想去的方式。

var sign; 

if (direction == 'left') sign = '-='; 
else sign = '+='; 

$('#slider').animate({left:sign + scrollAmount}, 'slow'); 

,或者如果它的屬性,你試圖傳遞

var prop = {}; 
prop[direction] = scrollAmount; 
$('#slider').animate(prop, 'slow'); 
+0

如果我不想使用' - ='或'+ ='操作符,那麼因爲在Chrome中放大問題會怎樣?有沒有「等效」的電話? – 2012-10-15 22:22:13

1

有一個在animate沒有這樣的屬性稱爲方向因此錯誤。檢查documentation

編輯按評論

那麼你應該通過向左或向右的CSS作爲第一個參數,從jQuery的動畫

示例代碼動畫API文檔

<!DOCTYPE html> 
<html> 
<head> 
    <style> 
div { 
    position:absolute; 
    background-color:#abc; 
    left:50px; 
    width:90px; 
    height:90px; 
    margin:5px; 
} 
</style> 
    <script src="http://code.jquery.com/jquery-latest.js"></script> 
</head> 
<body> 
    <button id="left">&laquo;</button> <button id="right">&raquo;</button> 
<div class="block"></div> 

<script> 
$("#right").click(function(){ 
    $(".block").animate({"left": "+=50px"}, "slow"); 
}); 

$("#left").click(function(){ 
    $(".block").animate({"left": "-=50px"}, "slow"); 
}); 

</script> 

</body> 
</html> 
+0

我想的方向通過其中「左」或「右」 – LeBlaireau 2012-04-25 09:12:57

+0

然後通過其中'left'或'右'... – elclanrs 2012-04-25 09:13:08