原生jquery实现移动端滑动分页

news/2024/7/11 1:48:27 标签: jquery, javascript, 前端

一、实现原理

  • a=152 代表dom顶部距离page顶部的距离
  • b=800 代表dom的高度
  • d 表示滚动条的滚动的高度,此时没有滚动,即d=0
  • c 表示scrollerHeight 即最外层容器的高度
  • offset 可以自定义设定,表示距离底部多少时请求下一页数据。

在这里插入图片描述

再来看图二:

在这里插入图片描述
此时滚动条向下滚动了50
a=152
b=800
c=852
d=50
如果我们设定this.offset=55
计算公式:a-d+b-c = 152-50+800-852=50 < 55
所以此时可以触发加载新内容.

二、原生 js + jq 代码

javascript">/* 分页接口 */
function getData(page, limit, type) {
  // 这里也就是原生Ajax,只不过我封装了一下
  Util.Fetch({
    url: Util.OPENAPI + '/customer/v1.0/cabinet/get-order-page',
    data: { currentPage: page, pageSize: limit },
    cbOk: function (res) {
      var list = res.responseBody.data.list

      if (!list) {
        return false
      }
      if (list.length==0) {
        Util.toast("暂无数据!");
        return;
      } else {

        for (i = 0; i < list.length; i++) {
          var item = list[i]
          // 把定义好的模板放在循环中列表中,依次追加到页面 dom元素上。
          var template = `
        <div class="content">
        <div class="content_top">
        <span>${item.location}</span>
        <span>${item.clearWeight}kg</span>
        </div>
        <div class="content_bottom">${item.createdTime}</div>
        </div>
        `
          $('#list').append(template)
        }


        
        if (list.length < limit) {
          // Util.toast('已到底部!');
          window.isEnd = true;
          return;
        }
      }
    },
    cbErr: function () {
      Util.toast("加载失败,请检查网络...");
    }
  })
},
/* 分页方法 */
function pageList() {
  var _this = this
  //判断什么时候加载更多
  var type = 1; //第一页
  var limit = 10;  //一页显示几条
  _this.getData(1, limit, type);  //初始化
  var winH = $(window).height(); //页面可视区域高度
  var loading = false;  //状态标记 是否要加载
  window.page = 2;               //page从2加开始
  window.isEnd = false; //是否加载结束状态
  $(window).scroll(function () {
    var scrollT = $(window).scrollTop(); //滚动条top
    var pageH = $(document.body).height();//body高度
    var aa = pageH - winH - scrollT;

    if (isEnd) {       //判断是否到底
      return;
    }
    if (isEnd == false && aa < 50) {
      if (loading) return;
      _this.getData(page, limit, type);
      window.page++;
      loading = true;
    } else {
      loading = false;
    }
  });
},

http://www.niftyadmin.cn/n/1866307.html

相关文章

css 线性渐变

线性渐变 - 从上到下&#xff08;默认情况下&#xff09; background: linear-gradient(yellow 0%, #fff 100%);线性渐变 - 从左到右&#xff08;to right&#xff09;/从右到左(to left) background-image: linear-gradient(to right, red , yellow);对角 - 左上角到右上角 …

vscode 插件 projectManager 使用

插件 projectManager 便于在VScode中管理多个项目&#xff0c;不用每次都保存为工作区。 标题使用方法 1、文件》打开文件夹 – 这一步是把项目引入到vscode 中。 2、点击保存图标&#xff0c;回车&#xff0c;把它做为一个项目管理保存。此时就会在下面生成一个管理文件夹。…

elementUi的el-select同时获取value和label的三种方法

1.通过ref的形式&#xff08;推荐) <template><div class"root"><el-selectref"optionRef"change"handleChange"v-model"value"placeholder"请选择"style"width: 250px"><el-optionv-for&q…

vue过度动画效果

整理一个自己可能常用到的过度动画效果 进入前 v-entenr {}进入中 v-entenr-active {}进入后 v-entenr-to {}离开前 v-leave {}离开中 v-leave-active {}离开后 v-leave-to {}<template><div><transition name"del_input_show"><p class"e…

后台权限管理

1&#xff0c;页面级权限 通过后台接口控制页面级的权限&#xff0c;将数据保存在本地并且和路由匹配&#xff0c;左侧tabber 仅展示导航到拥有权限的页面。或者使用路由拦截的方式也可以。 2&#xff0c;按钮级权限 超级管理员有所有按钮的权限&#xff0c;普通管理员可能…

element-ui导航菜单刷新保持高亮

举例 <el-menu:default-active"onRoutes"class"el-menu-vertical-demo"open"handleOpen"close"handleClose"><el-menu-item index"my"><i class"el-icon-setting"></i><span slot&qu…

vue前端实现下载本地Excel模板

vuecli2里面&#xff0c;下载静态文件方法&#xff1a; a标签用 :href"…/static/1111.xls" download“下载"下载;location.href”…/static/1111.xls"window.open等等&#xff1b; 需要注意的是&#xff1a;cli2里面需要把要下载的文件放在static下面&am…

vue前端实现批量导出

在vue的vue复选框的表格中&#xff0c;在表格内有两个方法select和selectAll方法select方法有两个参数&#xff0c;第一个参数是一个数组&#xff0c;内容为你所有选中的对象&#xff0c;选中几个在这个数组中就有几个对象&#xff0c;第二个参数为你选中的当前对象&#xff0c…