0
$("#right").live("click", function(event) {
    $(".image_scroll").animate({"left": "+=300px"}, "slow");
});

アニメーションが完了するまで、基本的に登録しないようにクリックする必要があります。使用してみましreturn falseたが、リンクが完全に無効になっているようです。

も使用してみ$(".image_scroll").stop().animate({"left": "+=300px"}, "slow");ましたが、アニメーションが途切れてグリッチに見えます。

編集:ID#rightaタグではなく画像にあります。HTML は次のとおりです。

<img src="/images/right.png" id="right" alt="" />
<div id="container">
    <div id="image_scroll">
        <img src="1.jpg" />
        <img src="3.jpg" />
        <img src="4.jpg" />
    </div><!-- /#image_scroll -->
</div> <!-- /#container
4

4 に答える 4

1

アニメーション化するにはコールバックを提供する必要があります...

$("#right").live("click", function(event) {
    event.preventDefault();
    var src = $(this).attr('href');
    $(".image_scroll").animate({"left": "+=300px"}, "slow", function() { window.location.href = src; });
});
于 2010-12-14T20:22:01.973 に答える
1

アニメーションが実行されているかどうかを保存する必要があります。そのために jQuery.data 関数を使用できます。

$("#right").live("click", function(event) {
    var el = $(this),
        state = el.data('animation_state');
    if(state == 'busy') {
       //ignore clicks while the animation is running
       return false;
    } 
    el.data('animation_state', 'busy');
    $(".image_scroll").animate({"left": "+=300px"}, "slow", function() {
       //finished animating      
       //set the state to finished so we can click the element the next time
      el.data('animation_state', 'complete'); 
    }); 
});
于 2010-12-14T21:56:07.133 に答える
0
var handler = function(event) {
    $("#right").die("click");
    $(".image_scroll").animate({"left": "+=300px"}, "slow", function(){
        $("#right").live("click", handler);
    });
};
$("#right").live("click", handler);
于 2010-12-14T21:07:53.407 に答える