2016-06-28 80 views
0

我使用,使用scrollTop滚动到页面上找到的文字实时搜索插件之前完成。 代码中使用键盘方向键updown到结果之间选择,唯一的问题是,由于scrollTop的动画时间,最后一个动作的结果将不会在结果之前,从以前的操作实现尚未实现在代码中指定的动画时间之后。jQuery的scrollTop的:每个动画需要跳转到下一个

它的意思是,如果我按down键的次数太多成一排,让我们说10倍,最后一个项目已经页面后发现,就算我立刻按下up键,我得等到最后10个事件被执行后,它将执行使用up键的最后一个事件。

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

Working Fiddle

反正有没有取消之前的事件,如果该键的同时动画正在发生按下跳转到下一个?

回答

1

好吧,我现在看到的滞后,则需要首先创建使用jQuery队列,然后清除它,当搜索改变与方向:

$(element).clearQueue(); 

我无法重现您所描述的laggy效果。但有一个函数可以用来实现这个jquery动画。

$(element).stop() 

我更新您的jsfiddle开始一个新的,here之前停止先前的动画。你

也可以阅读更多有关.stop()here

+0

即使在你的小提琴中,同样的问题仍然存在。转到搜索框并输入1,然后在连续10次按下向下箭头键,当完成按下向下键时,立即按向上键。你会看到发生了什么。 – Matty

+0

没有'skip()'效果吗?这就是我想要实现的,如果下一个动画被触发,则需要跳过上一个动画。 – Matty