我的页面上有一个DIV #alerts_wrapper,每5秒刷新一次,如下所示:
refresh_alerts = setInterval(function () {
$('#leftside div#alerts_wrapper').load('staffhome.php #alerts_container' );
}, 5000);
我在div设置为200px的最大高度,并滚动到自动。如果用户滚动此div,我怎么能阻止div刷新?然后如果用户停止滚动,再次开始刷新??
谢谢!
答案 0 :(得分:3)
使用此Jquery插件:scroll-startstop.events.jquery
使用上面提到的插件,您现在可以访问滚动事件,如下所示:
$('#yourdiv').bind('scrollstart', function(){
//user is scrolling
});
$('#yourdiv').bind('scrollstop', function(){
//user has finished scrolling
});
将此与bool标志结合使用以了解何时刷新div。
您的最终代码应如下所示:
var isScrolling = false;
$('#yourdiv').bind('scrollstart', function(){
isScrolling = true;
});
$('#yourdiv').bind('scrollstop', function(){
isScrolling = false;
});
refresh_alerts = setInterval(function () {
if (!isScrolling){
$('#leftside div#alerts_wrapper').load('staffhome.php #alerts_container' );
}
}, 5000);
答案 1 :(得分:2)
编辑:更新了新代码,无需轮询,只需在滚动时设置/重置标记。
var isScrolling = false;
$(function() {
$('#scrollingDiv').on('scroll', function() {
isScrolling = true;
});
refreshTimer = setInterval(refreshContent, 5000);
function refreshContent() {
if (!isScrolling) {
$('#scrollingDiv').prepend('Latest Content <br />');//test code
//$('#leftside div#alerts_wrapper').load('staffhome.php #alerts_container');
}
isScrolling = false;
}
});
----------老帖----------
对div滚动事件进行简单轮询就可以了。见DEMO
var isScrolling = false;
var refreshTimer = null;
$(function() {
$('#scrollingDiv').on('scroll', function() {
isScrolling = true;
if (refreshTimer != null) {
clearInterval(refreshTimer);
refreshTimer = null;
}
});
//polling to see if still scrolling
var pollScrolling = setInterval(function() {
isScrolling = false;
if (refreshTimer == null) {
refreshTimer = setInterval(refreshContent, 5000);
}
}, 500);
//initialize timer
refreshTimer = setInterval(refreshContent, 5000);
function refreshContent() {
if (!isScrolling) {
$('#scrollingDiv').prepend('Latest Content <br />');
//$('#leftside div#alerts_wrapper').load('staffhome.php #alerts_container');
}
}
});
答案 2 :(得分:0)
为此,我认为您需要实现自定义滚动事件,如下所示:http://james.padolsey.com/javascript/special-scroll-events-for-jquery/
然后你可以创建一个全局变量(甚至更好,在带有区间代码的闭包中),让我们称之为var isScrolling = false
。为scrollstart
和scrollstop
创建处理程序:
jQuery(div).on( 'scrollstart', function( ) {
isScrolling = true;
} );
jQuery(div).on( 'scrollstop', function( ) {
isScrolling = false;
} );
最后,检查您的间隔是否有滚动标记:
refresh_alerts = setInterval(function () {
if( !isScrolling ) {
$('#leftside div#alerts_wrapper').load('staffhome.php #alerts_container' );
}
}, 5000);