2016-06-28 4 views
0

scrollTopを使用するライブ検索プラグインを使用して、ページ上に見つかったテキストをスクロールします。 コードでキーボードの矢印キーupdownを使用して結果を選択すると、唯一の問題は、scrollTopのアニメーション時間のために、前のアクションの結果が達成される前に最後のアクション結果が達成されないことですコードで指定されているアニメーション時間の後。jQuery ScrollTop:次のアニメーションにジャンプする前に各アニメーションを終了する必要があります

downキーを連続して何度も押すと、ページ上に最後のアイテムが見つかった後に10回と言いましょう。すぐにupキーを押しても、最後の10個のイベントが実行されるまで待ってから、upキーを使用する最後のイベントを実行します。

$('html,body').animate({scrollTop: mark.offset().top-100}, 100); 

Working Fiddle

は前のイベントをキャンセルし、キーはアニメーションが起こっていると同時に押された場合は、次のいずれかにジャンプすることがとにかくありますか?

答えて

1

私は今、ラグを参照してください[OK]を、あなたは最初にjQueryを使ってキューを作成する必要があります、その後明確なそれ検索はして方向を変更した場合:

$(element).clearQueue(); 

私はあなたが説明したラグ効果を再作成することができませんでした。しかし、これを達成するために使用できるアニメーションのjqueryには関数があります。

$(element).stop() 

私は新しいもの、hereを開始する前に、以前のアニメーションを停止するには、あなたのjsFiddleを更新しました。

.stop()hereについてさらに読むことができます。

+0

あなたのフィドルでも、同じ問題が続く。検索ボックスに移動して1を入力し、下矢印キーを10回続けて押すと、下キーを押すと直ちに上キーに同じ操作を行います。そこには何が起こっているのが見えます。 – Matty

+0

'skip()'の効果はありませんか?これが私が達成しようとしているもので、次のアニメーションがトリガーされた場合は前のアニメーションをスキップする必要があります。 – Matty

関連する問題