0

これが私のフィドルです。ご覧のとおり、単純なクリックイベント ハンドラーを定義しました。

$('#traveller > a').click(function(e) {
    e.preventDefault();

    var $ul = $('#traveller ul');
    if($(this).hasClass('handle-next')) {
        if(Math.abs($ul.position().top - parentPadding) < totalHeight - itemHeight) {
            $ul.animate({top: '-=' + itemHeight});
        }
    }
    else {
        if($ul.position().top - parentPadding < 0) {
             $ul.animate({top: '+=' + itemHeight});
        }
    }
});

/を押してダブルクリックを数回すばやく行うと、位置が予期せず変更されることに気付きました。a.handle-nexta.handle-prevul

どうすればこの動作を回避できますか?

4

4 に答える 4

4

$ulアニメーション化されているかどうかを確認してください:

if($ul.is(':animated')) return;

デモ

于 2013-07-22T08:48:12.773 に答える
0

$ul.stop(); でそれを防ぐことができます。$ul が誰であるかを定義する直前

ここにフィドルがあります

var $ul = $('#traveller ul');
$ul.stop(true,true);

http://jsfiddle.net/A5u43/23/

于 2013-07-22T09:00:19.280 に答える