这应该工作:
$(document).ready(function() {
var $div = $('.scrolls');
var sL = 4000;
var startTime = new Date().valueOf();
var timePassed;
var stopped = false;
//animate:
$div.animate({
scrollLeft : sL
},100000, 'linear');
//on click, stop animation:
$div.on("click",function(){
$div.stop(true,false);
stopped = true;
});
//on mouseover -> stop animation (pause)
//on mouseout -> resume animation (actually a new animation
$div.hover(function() { //mouseenter
$div.stop(true, false);
timePassed = (new Date()).valueOf() - startTime;
}, function() { //mouseleave
if (!stopped) { //resume only if it was stopped on mouse enter, not on click
$div.animate({
scrollLeft : sL
}, 100000 - timePassed, 'linear');
}
});
});
有了这个代码,当你将鼠标悬停在DIV,动画停止。我们记录自启动以来经过了多少时间,因此我们可以创建一个新动画,通过将其持续时间设置为原来的持续时间减去已经过去的时间来模拟恢复旧动画。
希望这会有所帮助。
查找到'queue'和'dequeue'在jQuery的文档 –
谢谢!我已经研究过它,但还没有弄清楚如何把它放在一起。它似乎应该很容易,但是当然...我可以简单地与.dequeue交换.stop还是必须完全重新配置代码?这是一个jsfiddle http://jsfiddle.net/BMb65/9/ – user3158649
我为您的代码编写了一个修改后的版本,可根据需要进行工作。请回顾下面我的答案.. –