205 移动端实现滑动到底部加载下一页

<ul>
	<!-- 底部标志,用于往底部标志之前添加 -->
	<li id="end-sign"></li>
</ur>

 

<script type='text/javascript'>
    // 默认当前起始页
    var page = 1;
    // 当前是否允许加载
    var isLoading = true;

	$(document).ready(function(){
       // 加载第一页(页数为1)
        window.onload = waterallowData();
        
        $(window).scroll(function() {
            //如果滚动条滚动的高度加上窗口可视高度, 大于文档的总高度+50, 那么说明滚动条滚动到了底部。
            if(scrollTop() + windowHeight() >= (documentHeight() - 50/*滚动响应区域高度取50px*/)){
                //去加载数据]
                if (window.isLoading) {
                    waterallowData();
                }
            }
        });
    });	

	//获取页面顶部被卷起来的高度
    function scrollTop() {
        //->document.body.scrollTop(chrome)
        //->document.documentElement.scrollTop(firefox/IE)
        return Math.max(document.body.scrollTop, document.documentElement.scrollTop);
    }
 
    //获取页面文档的总高度
    function documentHeight() {
        //->现代浏览器(IE9+和其他浏览器)和IE8的document.body.scrollHeight和
        //->document.documentElement.scrollHeight都可以
        return Math.max(document.body.scrollHeight,document.documentElement.scrollHeight);
    }
 
    //获取页面浏览器视口的高度
    function windowHeight(){
        //->document.compatMode有两个取值。
        //->BackCompat:标准兼容模式关闭。 CSS1Compat:标准兼容模式开启。
        return (document.compatMode == "CSS1Compat") ? document.documentElement.clientHeight : document.body.clientHeight;
    }
    
	//加载数据
    function waterallowData() {

        $.ajax({
            async:false,  //如果是移动端的话,这里必须要定义为false
            type:'get',
            url:"{:url('course/getCourse')}",
            data:{page:page},
            dataType:'json',
            success:function(response){
                if(response.code==1){
                    // 重新定义当前所在页(后端已加1至下一页)
                    window.page = response.page;
                    
                    var html = '';

                    $.each(response.data,function (index,item) {            
                            html += '<li class="course_item"  onclick="courseDetail('+item.id+')">';
                            html +=     '<div class="course_img">';
                            html +=         '<img src="'+item.thumbnail+'">';
                            html +=     '</div>';
                            html += '<div class="course_title">';
                            html +=     '<span>'+item.id+'--'+item.title+'</span>';
                            html += '</div>';
                            html += '<div class="open_group_btn">去学习</div>';
                            html += '</li>';
                    });

                    // 将遍历出的数据赋值
                    $("#end-sign").before(html);
                }else{
                   // 加载不出数据,已至最后一页
                    window.isLoading = false;
                    window.page = response.page;
                }
            }
        });
    }
</script>

 

React移动端实现滑动加载可以使用react-infinite-scroll-component插件来实现。 安装插件: ``` npm install react-infinite-scroll-component ``` 使用: ``` import React, { Component } from 'react'; import InfiniteScroll from 'react-infinite-scroll-component'; class App extends Component { state = { items: Array.from({ length: 20 }), hasMore: true, }; fetchMoreData = () => { if (this.state.items.length >= 50) { this.setState({ hasMore: false }); return; } // 模拟异步加载数据 setTimeout(() => { this.setState({ items: this.state.items.concat(Array.from({ length: 20 })), }); }, 1500); }; render() { return ( <div> <InfiniteScroll dataLength={this.state.items.length} // 列表长度 next={this.fetchMoreData} // 触底时的回调函数 hasMore={this.state.hasMore} // 是否还有更多数据 loader={<h4>Loading...</h4>} // 加载时的提示 endMessage={<p>No more items</p>} // 列表到底时的提示 > {this.state.items.map((item, index) => ( <div key={index} style={{ padding: 20, border: '1px solid gray' }}> {`Item ${index}`} </div> ))} </InfiniteScroll> </div> ); } } export default App; ``` 在上面的代码中,我们使用了`react-infinite-scroll-component`插件,通过在`InfiniteScroll`组件中设置`dataLength`、`next`、`hasMore`、`loader`和`endMessage`等属性来实现滑动加载效果。当用户滑动到列表底部时,`next`函数将被调用,我们可以在该函数中异步加载更多数据,直到`hasMore`为`false`时停止加载。同时,在加载过程中,我们可以显示一个加载提示,当列表到达底部时,我们可以显示一个提示信息告诉用户已经没有更多数据可以加载了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值