2

divクリックとaから方向を取得し、これをアニメーション関数に渡そうとしています

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

なにが問題ですか?

ありがとう

4

2 に答える 2

2

animate 関数の最初の引数は、アニメーションの終わりの最終的なプロパティを示す CSS プロパティを受け取ります。その方向に進むことはできません。left または scrollLeft の量を設定して方向を変更したい場合は、方向の値を見て、行きたい方向に応じて -= または += を使用する必要があります。

var sign;

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

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

または、それが渡そうとしているプロパティである場合

var prop = {};
prop[direction] = scrollAmount;
$('#slider').animate(prop, 'slow');
于 2012-04-25T09:13:04.473 に答える
1

animate方向として呼び出されるプロパティがないため、エラーが発生します。ドキュメントを確認してください。

コメントに従って編集

次に、アニメーション化する最初のパラメーターとして、css で left または right を渡す必要があります。

jQuery animate 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>
于 2012-04-25T09:10:18.333 に答える