首页 新闻 搜索 专区 学院

jQuery ScrollPagination 为什么会滚动时候会重复读取数据?...

0
悬赏园豆:50 [待解决问题]

jQuery ScrollPagination 我使用这个的滚动条移动一次就会自动读取三次数据,我在输出程序页面直接输出一个1,滚动一次就输出3个1.还有这个怎么判断页码呢?就是当前读取的数据是第几页的数据,怎么输出到后台输出程序页面呢?

读取页面jquyery代码:

$(function(){
 
 $('#content').scrollPagination({
  'contentPage': 'suchu.asp', 

  'contentData': {}, 

  'scrollTarget': $(window), 

  'heightOffset': 10, 

  'beforeLoad': function(){ 

   $('#loading').fadeIn(); 
  },
  'afterLoad': function(elementsLoaded){

    $('#loading').fadeOut();
    var i = 0;
    $(elementsLoaded).fadeInWithDelay();
    if ($('#content').children().size() > 30){ 

     $('#nomoreresults').fadeIn();
    $('#content').stopScrollPagination();
    }
  }
 });
 
 // code for fade in element by element
 $.fn.fadeInWithDelay = function(){
  var delay = 0;
  return this.each(function(){
   $(this).delay(delay).animate({opacity:1}, 200);
   delay += 100;
  });
 };
});

日月黄土的主页 日月黄土 | 初学一级 | 园豆:19
提问于:2012-09-10 09:08
< >
分享
所有回答(4)
0

楼主,你解决问题了吗?求答案

cmz1989 | 园豆:111 (初学一级) | 2012-12-03 17:10
0

楼主,怎么个情况?求解啊。。。

anting | 园豆:202 (菜鸟二级) | 2013-01-29 17:32
0

我也遇到了这个问题,研究了他的实现,每次scroll动作都会触发loadContent去校验高度差,当高度差超出设定值的时候就会发送ajax请求去加载新内容,问题就出现了,在内容还没加载出来的时候,再scroll依旧会触发loadContent,而且依然判断成功去发送ajax请求,就导致了这种重复的请求。

loadContent的时候加个lock,判断lock=true的时候就不触发loadContent了,ajax返回后再把lock=false了

zl_terry | 园豆:202 (菜鸟二级) | 2013-06-25 16:38

您好。能把修改的后的js贴出来下吗。

支持(0) 反对(0) 猪头猪脑 | 园豆:6 (初学一级) | 2014-02-21 11:23

@猪头猪脑: 

<input type="hidden" value="-2" id="blocked_page"/>

<script type="text/javascript">
window.onload=function(){
App.ajax_get_asks("<%=@ask.id%>");
$("#toTop").scrollToTop();

$('#answer_list').scrollPagination({
'contentPage': "/asks/<%=@ask.id%>/ajax_get_answers?filter=<%=(params[:filter].to_s=='new')?'new':'vote'%>",
'contentData': {},
'scrollTarget': $(window),
'heightOffset': 300,
'beforeLoad': function(){
if(parseInt($('#blocked_page').val()) > 0) {
return false;
}else{
$('#blocked_page').val(parseInt($('#blocked_page').val())*-1);
$('#loading').fadeIn();
return true;
}
},
'afterLoad': function(){
$('#loading').fadeOut();
if ($('#answer_list').children().size() >= <%=@ask.answers_count%>){
$('#answer_list').stopScrollPagination();
}
$('#blocked_page').val((parseInt($('#blocked_page').val())+1)*-1);
}
});
}
</script>

 

我这个略微复杂些,其实就是隐藏域true or false。在before里面判断true就执行,然后改成false;false就不执行return。在after里面执行完了改回true。我这里$('#blocked_page').val()好像是做页码用的,然后根据正负判断是否处理

支持(0) 反对(0) zl_terry | 园豆:202 (菜鸟二级) | 2014-02-21 14:14
0

我也遇到这样的问题,希望有高手可以贴出解决方法

王哆啦 | 园豆:202 (菜鸟二级) | 2013-12-04 16:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册