您可以使用.hover():功能停止滚动,当鼠标在滚动框元素:
http://jsfiddle.net/bGHAH/1/
setInterval(function(){
if(!mouseover)
{
$('#scrollbox').scrollLeft($('#scrollbox').scrollLeft()+1);
}
}, 50);
var mouseover = false;
$('#scrollbox').hover(function(){
mouseover = true;
},function(){
mouseover = false;
});
编辑
根据您的COM我设法从以下网站找到一个jquery插件:special scroll events for jquery。
此插件包含一个事件,它尝试根据上一个滚动步骤和检查完成之间所经过的时间段来确定滚动是否已停止。
为了得到这个工作,我需要减慢你的时间间隔,以使插件使用的延迟达到310毫秒。这样做意味着我必须增加滚动步骤才能使其明显移动。
这里是链接:
http://jsfiddle.net/EWACn/1/
这里是代码:
var stopAutoScroll = false;
$(document).ready(function(){
setInterval(function(){
if(!stopAutoScroll)
{
$('#status').html('scrolling');
$('#scrollbox').scrollLeft($('#scrollbox').scrollLeft()+10);
}else{
$('#status').html('not scrolling');
}
}, 310);
$('#scrollbox').bind('scrollstart', function(e){
stopAutoScroll = true;
});
$('#scrollbox').bind('scrollstop', function(e){
stopAutoScroll = false;
});
});
希望这有助于。
您可以检查用户鼠标是否在滚动的div上,因为大多数浏览器只在用户点击div时才滚动div。尽管如此,这并不是完全可以证明的,因为当他徘徊在div上时,你的事件可能会触发。 –
由于DIV填充了整个客户区域,因此不实用。此外,Mac用户用两个手指滚动(不点击)。 – travelboy