苹果手机瀑布流多次调用滚动事件问题
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>