$(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'),这个怎么解决呢
给tab的切换加上监听事件, 在window的scroll之后监听(后监听的先执行),这样切换tab的时候先解绑window的scroll事件,就能解决了。