页签切换与scroll事件

$(window).scroll(function(){

            var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
            var scrollHeight = document.documentElement.scrollHeight ||  document.body.scrollHeight;
            var windowHeight =  document.documentElement.clientHeight || document.body.clientHeight;

            if(scrollTop + windowHeight + 30 >= scrollHeight){
                if(prevTime != null && (parseInt(Date.now())-parseInt(prevTime)) < 500){
                    return false;
                }
                prevTime = Date.now();
                //ajax 加载数据....(1)
                }

})

需求:页面有个tab切换,有的tab带翻页,有的不带
实现方法:每次tab切换的click事件里先解绑scroll事件$(window).off('scroll');然后再绑定scroll事件,scroll里判断页面是否滚动到最下端,如果是则执行ajax加载
问题:每次一个div下拉到特别长得时候,tab切换到另一个div的时候都会触发一次(1)里的ajax加载
如果才能在tab切换的时候移除这个scroll里的事件呢?

现在已经在tab的click事件里添加了$(window).off('scroll'),还是不行

刚才又试了一下,应该是在tab的click里的$(window).off('scroll')解绑之前,因为页签切换,页面长度变里,所以先执行了$(window).scroll里的scrollTop + windowHeight + 30 >= scrollHeight判断,正好条件成立,然后ajax请求,后来才执行的$(window).off('scroll'),这个怎么解决呢

阅读 5.5k
1 个回答

给tab的切换加上监听事件, 在window的scroll之后监听(后监听的先执行),这样切换tab的时候先解绑window的scroll事件,就能解决了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题