苹果手机瀑布流多次调用滚动事件问题

2017-12-12  本文已影响4人  呦丶耍脾气

前瞻

今天遇到个问题,就是手机端页面使用异步加载列表数据时在导航掉到达底部时,苹果手机多次触发事件,安卓手机没有问题,源代码如下:

<script type="text/javascript">
    var page= 1,geturl="{:U('shoucang/ajax_space')}";
    //异步加载瀑布流
    $(window).scroll(function () {
      if ($(document).scrollTop() + $(window).height() >= $(document).height()) {
        $.post( geturl,{num: page,table:'space'},function(e){
          if( e.status==1 ){
            $('.news_con').append(e.data);
            page++;
          }else{
            layer.msg(e.msg);
            $(window).unbind();
          }
        });
      }
    });
  </script>

解决办法

具体原因不太清楚,苹果手机(真机测试,google调试没问题)每次到达底部会触发2到3次事件,所以这里使用了条件作为限制,添加了一个变量scrolled作为限制,修改好的代码如下:

<script type="text/javascript">
    var page= 1,geturl="{:U('shoucang/ajax_space')}";
    //异步加载瀑布流
    var scrolled=false;
    $(window).scroll(function () {

      if ($(document).scrollTop() + $(window).height() >= $(document).height()) {
        if (scrolled){
          return false;
        }        //防止重入
        scrolled = true;     //锁定函数
        $.post( geturl,{num: page,table:'space'},function(e){
          if( e.status==1 ){
            $('.news_con').append(e.data);
            scrolled = false;
            page++;
          }else{
            layer.msg(e.msg);
            $(window).unbind();
          }
        });
      }
    });
  </script>
上一篇 下一篇

猜你喜欢

热点阅读