這應該工作:
$(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
我爲您的代碼編寫了一個修改後的版本,可根據需要進行工作。請回顧下面我的答案.. –