jquery使用infinitescroll无线滚动+自定义翻页

jquery版本 jquery-1.8.3.js
infinitescroll版本 2.0.0
如果infinitescroll版本最新的jquery版本也要用新的
接口用nodejs

jquery.infinitescroll.js官网地址

前端代码《接口返回JSON数据》

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>无限滚动加载</title>
    <style type="text/css">
        * {
            margin: 0;
            padding: 0;
        }

        html,
        body {
            width: 100%;
            height: 100%;
        }

        .in_scroll {
            width: 150px;
            margin: 0 auto;
            border: 1px solid blue;
            padding: 0px 2px;
            box-sizing: border-box;
        }

        .item {
            width: 100%;
            height: 100px;
            font-size: 30px;
            line-height: 100px;
            text-align: center;
            border: 1px solid gray;
            margin-top: 2px;
            box-sizing: border-box;
        }
        #infscr-loading{
            text-align: center;
        }
    </style>
</head>
<body>
    <div style="height: 300px;"></div>
    <!--infinteId是最外层的元素,所有加载的内容都会放在这个元素内-->
    <div class="in_scroll" id='infinteId'>
        <!--这是显示的每个条目的内容,保证都有一个共同的class属性,不必是item-->
        <!-- <div class="item">1</div> -->
    </div>
    <div id="page-nav" class="hidden">
        <!--在最后,要加上一个导航,每次滚到底部,就会触发这个url去加载数据-->
        <a href="http://127.0.0.1:8888/api/getDataJ?page=2"></a>
    </div>

</body>
<script src="../js/jquery-1.8.3.js"></script>
<script src="../js/jquery.infinitescroll.dev.js"></script>
<script>
    var page = 1
    $(function () {
        var url = "http://127.0.0.1:8888/api/getDataJ?page=1";
        $.ajax({
            type: "get",
            url: url,
            cache: false,
            beforeSend: function (XMLHttpRequest) {
               // $(".loading").show();
            },
            success: function (data, textStatus) {
                var dataArr = data.data
                var innerHtml = ''
                for (let i = 0; i < dataArr.length; i++) {
                    innerHtml += '<div class="item">' + dataArr[i] + '</div>'
                }
                $('#infinteId').append(innerHtml);
                page = data.currPage
                $('#infinteId').infinitescroll({
                    navSelector: '#page-nav',    // selector for the paged navigation 
                    nextSelector: '#page-nav a',  // selector for the NEXT link (to page 2)
                    itemSelector: '.item',     // selector for all items you'll retrieve
                    debug: true,
                    loading: {
                        finishedMsg: '已经到底了!亲',
                        img: '../img/ajaxs.gif',
                        msgText: '努力加载中...'
                    },
                    dataType: 'json',//可以是json
                    template: function(data) {
                        //data表示服务端返回的json格式数据,这里需要把data转换成瀑布流块的html格式,然后返回给回到函数
                        page = data.currPage
                        console.log(data);//将json转成html并返回
                        var dataArr = data.data
                        var innerHtml = ''
                        for (let i = 0; i < dataArr.length; i++) {
                            innerHtml += '<div class="item">' + dataArr[i] + '</div>'
                        }
                        return innerHtml;
                    },
                    state: { currPage: page } //第二次滑动的页码
                },
                function (data) {
                	//scroll一次滑动完成执行
                    console.log('currPage------',page)
                    //之后的滑动更新当前页面
                    $('#infinteId').infinitescroll('update', {
                        state: { currPage: page} 
                    });
                });
            },
            complete: function (XMLHttpRequest, textStatus) {
                // $(".loading").hide();
            },
            error: function () {
                //请求出错处理   
                //showError("网络出错,请刷新页面");             
            }
        });

    });
</script>

</html>

前端代码《接口返回文本数据》

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>无限滚动加载</title>
    <style type="text/css">
        * {
            margin: 0;
            padding: 0;
        }

        html,
        body {
            width: 100%;
            height: 100%;
        }

        .in_scroll {
            width: 150px;
            /* height: 500px; */
            margin: 0 auto;
            /* overflow-y: auto; */
            border: 1px solid blue;
            padding: 0px 2px;
            box-sizing: border-box;
        }

        .item {
            width: 100%;
            height: 100px;
            font-size: 30px;
            line-height: 100px;
            text-align: center;
            border: 1px solid gray;
            margin-top: 2px;
            box-sizing: border-box;
        }
        #infscr-loading{
            text-align: center;
        }
    </style>
</head>

<body>
    <!--tasks是最外层的元素,所有加载的内容都会放在这个元素内-->
    <div class="in_scroll" id='infinteId'>
        <!--这是显示的每个条目的内容,保证都有一个共同的class属性,不必是item-->
        <!-- <div class="item">1</div> -->
    </div>
    <div id="page-nav" class="hidden">
        <!--在最后,要加上一个导航,每次滚到底部,就会触发这个url去加载数据-->
        <a href="http://127.0.0.1:8888/api/getData?page=2"></a>
    </div>

</body>
<script src="../js/jquery-1.8.3.js"></script>
<script src="../js/jquery.infinitescroll.dev.js"></script>
<script>
    $(function () {
        var url = "http://127.0.0.1:8888/api/getData?page=1";
        $.ajax({
            type: "get",
            url: url,
            cache: false,
            beforeSend: function (XMLHttpRequest) {
               // $(".loading").show();
            },
            success: function (data, textStatus) {
                $('#infinteId').append(data);
                var currPage = $('.currPage').val()
                $('.currPage').parent().remove()
                $('#infinteId').infinitescroll({
                    navSelector: '#page-nav',    // selector for the paged navigation 
                    nextSelector: '#page-nav a',  // selector for the NEXT link (to page 2)
                    itemSelector: '.item',     // selector for all items you'll retrieve
                    debug: true,
                    loading: {
                        finishedMsg: '已经到底了!亲',
                        img: '../img/ajaxs.gif',
                        msgText: '努力加载中...'
                    },
                    state: { currPage: currPage } //第二次滑动的页码
                },
                function (data) {
                    // $('#infinteId').append(data); 
                    var currPage = $('.currPage').val()
                    $('.currPage').parent().remove()
                    $('#infinteId').infinitescroll('update', {
                        state: { currPage: currPage} 
                    });
                    
                });
            },
            complete: function (XMLHttpRequest, textStatus) {
                // $(".loading").hide();
            },
            error: function () {
                //请求出错处理   
                //showError("网络出错,请刷新页面");             
            }
        });

    });
</script>

</html>

node后端接口


var express = require('express')
var app = express()
//测试接口
app.get('/api/getData', (req, res) => {
    let page = parseInt(req.query.page)
    res.setHeader("Access-control-Allow-Origin", '*');
    //这里很关键的一句,表示发送的消息是以纯文本形式发送的
    res.set('Content-Type', 'text/plain')
    let innerHtml = ''
    for (let i = page*10; i < (page+1)*10; i++) {
        innerHtml += '<div class="item">' + (i + 1) + '</div>'
    }
    innerHtml += '<div class="item"><input class="currPage" type="hidden" value="'+ (page+2) +'" /></div>'
    res.send(innerHtml)
})

app.get('/api/getDataJ', (req, res) => {
    let page = parseInt(req.query.page)
    res.setHeader("Access-control-Allow-Origin", '*');
    let userArr = []
    for (let i = page*10; i < (page+1)*10; i++) {
        userArr.push(i)
    }
    res.send({status:0,currPage:(page+2),data:userArr})
})

app.listen(8888, () => {
    console.log("8888端口");
});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/753926.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《Redis设计与实现》阅读总结-4

第 17 章 集群 Redis集群是Redis提供的分布式数据库方案&#xff0c;集群通过分片&#xff08;sharding&#xff09;来进行数据共享&#xff0c;并提供复制和故障转移的功能 一、命令 CLUSTER MEET命令&#xff1a;用来连接不同的开启集群支持的 Redis 节点&#xff0c;以进入…

dataX同步SQLserver到MySQL数据

引用datax官方描述&#xff1a; DataX 是阿里云 DataWorks数据集成 的开源版本&#xff0c;在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。DataX 实现了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS…

易用且免费的在线3D交互编辑器?

目前市面上的在线3D交互编辑器&#xff0c;有收费、免费、永久免费的。 1、博维数孪&#xff1a;永久免费的在线3D数字孪生应用平台&#xff0c;用户可以轻松创作和分享多种应用类型&#xff0c;包括3D交互展示、3D产品目录、交互式动画、3D产品配置器、交互式演示文稿、在线商…

webstorm无法识别tsconfig.json引用项目配置文件中的路径别名

问题 vite项目模板中&#xff0c;应用的ts配置内容写在tsconfig.app.json文件中&#xff0c;并在tsconfig.json通过项目引用的方式导入 {"files": [],"references": [{"path": "./tsconfig.app.json"},{"path": "./t…

Dominate_一个用于生成和操作 HTML 文档的 Python 库

目录 01初识 Dominate 什么是 Dominate&#xff1f; 为什么选择 Dominate&#xff1f; 安装与配置 02Dominate 的基本使用 创建简单的 HTML 文档 添加表格 嵌套结构 03Dominate 的高级功能 动态内容生成 使用…

【自动化测试】Selenium自动化测试框架 | 相关介绍 | Selenium + Java环境搭建 | 常用API的使用

文章目录 自动化测试一、selenium1.相关介绍1.Selenium IDE2.Webdriverwebdriver的工作原理&#xff1a; 3.selenium Grid 2.Selenium Java环境搭建3.常用API的使用1.定位元素2.操作测试对象3.添加等待4.打印信息5.浏览器的操作6.键盘事件7.鼠标事件8.定位一组元素9.多层框架定…

CO-DETR利用coco数据集训练和推理过程

CO-DETR利用coco数据集训练和推理过程&#xff0c;参考链接 Co-DETR训练自己的数据集 文章目录 前言训练过程推理过程总结 前言 环境&#xff1a;PyTorch 1.11.0 Python 3.8(ubuntu20.04) Cuda 11.3 先是在github上下载CO-DETR模型 !git clone https://github.com/Sense-X/Co…

新手教程系列 -- SQLAlchemy对同一张表联表两次

在开发过程中,我们经常会遇到对同一张表进行多次联表查询的需求。比如在查询航线时,我们希望将起飞和降落的机场名称代入结果中。为了实现这一目标,机场名称统一存放在 AirPort 表中。下面,我们将介绍如何通过 SQLAlchemy 实现这一需求。 问题描述 一般情况我们第一时间会…

针对VMWare无法使用鼠标功能键问题

在使用 VMWare 虚拟机的Ubuntu系统时发现无法使用许多鼠标带有额外的功能键&#xff0c;比如常用的前进后退&#xff0c;但是双系统中的Ubuntu没有问题&#xff0c;后来一搜发现是&#xff0c;虚拟系统中不支持这些功能键。因此我们对这个问题进行了解决。 解决方案 1.找到自…

Jenkins容器的部署

本文主要是记录如何在Centos7上安装docker,以及在docker里面配置tomcat、mysql、jenkins等环境。 一、安装docker 1.1 准备工作 centos7、VMware17Pro 1.2 通过yum在线安装dokcer yum -y install docker1.3 启动docker服务 systemctl start docker.service1.4 查看docke…

【AUTOSAR 基础软件】DEM模块详解(诊断故障管理)

文章包含了AUTOSAR基础软件&#xff08;BSW&#xff09;中DEM模块相关的内容详解。本文从ISO标准&#xff0c;AUTOSAR规范解析&#xff0c;ISOLAR-AB配置以及模块相关代码分析四个维度来帮读者清晰的认识和了解DEM这一基础软件模块。文中涉及的ISOLAR-AB配置以及模块相关代码都…

hive零基础入门

1、hive简介 hive&#xff1a;由facebook开源用于解决海量结构化数据的统计工具。 hive是基于Hadoop的数据仓库工具&#xff0c;可以将结构化的数据文件映射为一张表&#xff0c;并提供sql查询功能。 2、hive本质 hive的本质是HQL&#xff08;HiveSQL&#xff09;转化成MapR…

【人工智能】—XGBoost、CatBoost、LightGBM算法构建信用卡欺骗识别模型

引言 在金融领域&#xff0c;信用卡欺诈行为一直是银行和金融机构面临的一大挑战。随着电子商务的快速发展&#xff0c;信用卡欺诈事件的数量和复杂性都在不断增加。据统计&#xff0c;全球每年因信用卡欺诈造成的损失高达数十亿美元。因此&#xff0c;开发有效的欺诈检测系统…

检索增强生成 (RAG):揭开这一术语的神秘面纱并解释其带来的价值

一、介绍 如今&#xff0c;数据已成为新的黄金&#xff0c;而高效筛选这些丰富信息的能力则是成功企业脱颖而出的关键。Retrieval Augmented Generation&#xff08;RAG&#xff09;是创新的标杆&#xff0c;尤其是在知识管理领域。它不再只是为了存储信息&#xff0c;而是为了…

半小时速通Python爬虫!GitHub开源的Python爬虫入门教程

今天给小伙伴们带来了一篇详细介绍 Python 爬虫入门的教程&#xff0c;从实战出发&#xff0c;适合初学者。 小伙伴们只需在阅读过程紧跟文章思路&#xff0c;理清相应的实现代码&#xff0c;30 分钟即可学会编写简单的 Python 爬虫。 这篇 Python 爬虫教程主要讲解以下 5 部…

爆款短视频素材库有哪些?分享几个容易火的视频素材网站

当今自媒体时代&#xff0c;每位内容创作者都渴望制作出下一个爆款短视频。你是否在寻找那些能让你的视频迅速蹭热度的顶级素材库&#xff1f;本文将为你介绍几个视频素材库&#xff0c;它们或许能成为你成功的秘密武器。首先要提的&#xff0c;自然是著名的国内素材库——蛙学…

信创加密沙箱,是如何应对国产化系统加密下的场景的?

SDC信创加密沙箱作为一款基于国产操作系统&#xff08;如麒麟、统信等&#xff09;设计的安全防护工具&#xff0c;以安全沙箱为核心概念&#xff0c;对沙箱内的数据和应用进行全面保护&#xff0c;保障业务系统和核心资料的安全。 信创加密沙箱的背景与意义 在当前复杂的网络…

【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【15】异步_线程池

持续学习&持续更新中… 守破离 【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【15】异步_线程池 初始化线程的 4 种方式开发中为什么使用线程池线程池七大参数线程池工作原理常见的 4 种线程池生产中如何使用线程池&#xff1f;CompletableFuture 异步编排—简介业务…

SpringBoot防抖方案(防止表单重复提交)

SpringBoot防抖方案&#xff08;防止表单重复提交&#xff09; 1.应用场景&#xff08;什么是防抖&#xff09; 所谓防抖&#xff0c;一是防用户手抖&#xff0c;二是防网络抖动。在Web系统中&#xff0c;表单提交是一个非常常见的功能&#xff0c;如果不加控制&#xff0c;容…

最新AIGC系统源码-ChatGPT商业版系统源码,自定义ChatGPT指令Promp提示词,AI绘画系统,AI换脸、多模态识图理解文档分析

目录 一、前言 系统文档 二、系统演示 核心AI能力 系统快速体验 三、系统功能模块 3.1 AI全模型支持/插件系统 AI模型提问 文档分析 ​识图理解能力 3.2 GPts应用 3.2.1 GPTs应用 3.2.2 GPTs工作台 3.2.3 自定义创建Promp指令预设应用 3.3 AI专业绘画 3.3.1 文…