http://jsbin.com/oqadud/3/edit
$list = $('#list');
$listSH = $list[0].scrollHeight - $list.outerHeight();
function loop(){
var t = $list.scrollTop();
$list.stop().animate({scrollTop : !t ? $listSH : 0 }, 2000, loop);
}
loop();
$list.on('mouseenter mouseleave', function( e ){
return e.type=="mouseenter"? $list.stop() : loop();
});
$listSH
实际上将返回可用的滚动高度,而不是您可以使用animate
回调来调用function loop()
将循环我们的动画。
在里面,loop
我们只需要获取当前$list.scrollTop();
位置 - 在 mouseleave 或任何其他情况下,我们可以询问在 boolean animate to else animate toternary operator ( ? : )
的情况下要做什么。!t (is0==false)
$listSH
0
在 DOM 上准备好你打电话/开始你的loop()
并在'mouseenter mouseleave'
三元运算符中再次抓取事件:
IF event == mouseenter
:.stop()
任何动画
ELSE:重新启动我们的loop()
函数(正如我所说,从 current scrollTop()
)。