1、首先引用isScroll插件

说明:页面加载时初始化isScroll,然后调用pullDownAction()和pullUpAction(),每次切换tab时,只需要对pullDownAction()和pullUpAction()里面的东西进行修改即可!!!

html:

<div id="moreWrapper" class="moreWrapper">
<div class="news-tab flexbox flexbox-middle">
<div class="tab-item active">公司动态</div>
<div class="tab-item">行业新闻</div>
<div class="tab-item">媒体报道</div>
<div class="tab-item">案例</div>
<div class="tab-item">大咖说</div>
</div>
</div>
<div class="content bg-gray articleCate" id="wrapper">
<div class="wrapper" id="wrapper-scroller">
<div id="pullDown">
<!--<span class="pullDownIcon"></span>-->
<span class="pullDownLabel">下拉刷新...</span>
</div>
<ul class="news-tab-con article_list">
<foreach name="article_slice" item="vo">
<li>
<a class="flexbox flexbox-middle border-bottom-1px" href="">
<div class="flexchild">
<div class="title">{$vo['title']}</div>
<div class="time">{$vo['c_time']}</div>
</div>
<div class="item-img"><img src= "{$vo['img']}"></div>
</a>
</li>
</foreach>
</ul>
<!--上拉加载更多-->
<div id="pullUp" attrVal="">
<!--<span class="pullUpIcon"></span>-->
<span class="pullUpLabel">上拉加载更多...</span>
</div>
</div>
</div>

css关键代码实现wrapper里面滚动

/*上拉加载*/
#wrapper {
position: absolute;
top: .68rem;
left: ;
width: %;
height: auto;
padding: ;
overflow: auto;
}
#wrapper-scroller {
position: absolute;
z-index: ;
/* -webkit-touch-callout: none; */
-webkit-tap-highlight-color: rgba(, , , );
width: %;
padding: ;
}
#wrapper #pullDown, #wrapper #pullUp {
background: #f7f7f7;
height: .92rem;
line-height: .92rem;
font-size: .24rem;
color: #;
text-align: center;
}

js:

    //获取列表的五个参数定义
var type = ,page = , limit = "";
var generatedCount = ; //上拉加载更多次数统计
var myScroll = ''; //主列表的iscroll实例
var countFlag = true; //上拉计数标识,防止还没渲染页面就再次加一
var myScrollFlag = false, oIscrollFlag = false; //标识iscroll有没有实例化成功(实例化过后才能refresh)
var all_width = ;
var len = $(".news-tab .tab-item").length;
for (var i = ; i < len; i++) {
var item_width = $(".news-tab .tab-item").eq(i).outerWidth();
console.log(item_width)
all_width += parseFloat(item_width);
console.log(all_width)
}
$('.news-tab').css('width', all_width + 'px');
var myscroll1 = new iScroll("moreWrapper", {hScroll: true, vScroll: false, hScrollbar: false, vScrollbar: false}); //点击选项卡切换
$("body").on("click", ".news-tab .tab-item", function () {
type = $(this).index()+;
$(".news-tab .tab-item").removeClass("active");
$(this).addClass("active");
$(".article_list").html("");
//将上拉加载次数清0
generatedCount = ;
//切换选项卡的时候将无更多数据的限制去掉
$("#pullUp").attr("attrVal", );
$("#pullUp .pullUpLabel").html("上拉加载更多...");
getOrderByAjax(type,,);
})
//初始化列表数据
getOrderByAjax(,,);
/**
* 获取保单列表的ajax请求
* @param type 咨询类型(公司动态,行业新闻,媒体报道,保险案例,大咖说保险)
* @param page 请求的页数
* @param limit 加载更多的传值(默认0,第一次加载更多为1,以此类推)
*/
function getOrderByAjax(type,page,limit) {
$.ajax({
url: "{:U('ajaxArticleCate')}",
type: 'post',
dataType: 'json',
data: {'type':type,'page':page},
beforeSend: function () { //ajax加载的时候使用loading遮罩层
if (limit > ) return;
$(".loading-box").show();
},
complete: function () {
if (limit > ) return;
$(".loading-box").hide();
},
success: function (res) {
if (res.data.article == ) { //已经没有更多保单数据
// $("#pullup .pullUpLabel").text("无更多数据!");
$("#pullUp").attr("attrVal", ""); //这个值为1的时候说明无更多数据了
setTimeout(function () {
if (myScrollFlag) {
myScroll.refresh();
}
}, )
return;
} if (res.data.article.length < && limit == ) { //如果刚进来就没有10条,则隐藏上拉加载更多
$("#pullUp").hide();
} else {
$("#pullUp").show();
} $("#pullUp").attr("attrVal", ""); //这个值为0表示可以上拉加载更多数据
$("#pullUp .pullUpLabel").html("上拉加载更多..."); var html='';
if(res.data.article && res.data.article.length != ){
var list=res.data.article;
for(var i=;i<res.data.article.length;i++){
html+='<li class="border-bottom-1px"><a class="flexbox flexbox-middle" href={:U("ajaxArticleContent")}?id='+list[i].id+'>'
html+='<div class="flexchild">'
html+='<div class="title">'+list[i].title+'</div>'
html+='<div class="time">'+list[i].c_time+'</div>'
html+='</div>'
html+='<div class="item-img"><img src= "'+list[i].img+'"></div>'
html+='</a></li>';
}
// $(".article_list").append(html);
$(".article_list").append(html);
countFlag = true; $("#myorder-wrapper").show(); /*//如果是第一次加载,默认列表置回顶部
if (limit == 0) {
if (myScrollFlag) {
myScroll.scrollTo(0, 0, 100, false);
}
}*/ setTimeout(function () {
if (myScrollFlag) {
myScroll.refresh();
if (limit == ) {
console.log("")
myScroll.scrollTo(, -, , false);
}
}
}, ); //刷新iscroll
}
}
})
}
</script>
<!--下拉刷新、上拉加载更多相关js-->
<script>
//设置容器高度
$("#wrapper").height($(window).height() - $(".header").height() - $(".news-tab").outerHeight());
/*+ $("#pullDown").outerHeight()*/
var pullDownEl, pullDownOffset,
pullUpEl, pullUpOffset; //下拉加载及刷新
function pullDownAction() {
generatedCount = ; //下拉刷新的时候清空上拉加载更多的次数统计
getOrderByAjax(type,page,);
} //上拉加载及刷新
function pullUpAction() {
var isMore=$("#pullUp").attr("attrVal");
if (countFlag&&isMore!="") {
limit = ++generatedCount;
countFlag = false;
page++;
getOrderByAjax(type,page,limit);
} } function loaded() {
pullDownEl = document.getElementById('pullDown');
pullDownOffset = pullDownEl.offsetHeight;
// console.log(pullDownOffset); pullUpEl = document.getElementById('pullUp');
pullUpOffset = pullUpEl.offsetHeight; myScroll = new iScroll('wrapper', {
hScroll: false,
vScroll: true,
x: ,
y: ,
useTransition: true,
topOffset: pullDownOffset,
onRefresh: function () {
if (pullDownEl.className.match('loading')) {
pullDownEl.className = '';
pullDownEl.querySelector('.pullDownLabel').innerHTML = '下拉刷新...';
} else if (pullUpEl.className.match('loading')) {
pullUpEl.className = '';
if ($("#pullUp").attr("attrVal") == ) {
pullUpEl.querySelector('.pullUpLabel').innerHTML = '无更多数据!';
return;
}
pullUpEl.querySelector('.pullUpLabel').innerHTML = '上拉加载更多...';
}
},
onScrollMove: function () {
if (this.y > && !pullDownEl.className.match('flip')) {
pullDownEl.className = 'flip';
pullDownEl.querySelector('.pullDownLabel').innerHTML = '松开刷新...';
this.minScrollY = ;
} else if (this.y < && pullDownEl.className.match('flip')) {
pullDownEl.className = '';
pullDownEl.querySelector('.pullDownLabel').innerHTML = '下拉刷新...';
this.minScrollY = -pullDownOffset;
} else if (this.y < (this.maxScrollY - ) && !pullUpEl.className.match('flip')) {
if ($("#pullUp").attr("attrVal") == "") return; //无更多数据的时候上拉加载更多直接return
pullUpEl.className = 'flip';
pullUpEl.querySelector('.pullUpLabel').innerHTML = '松开刷新...';
this.maxScrollY = this.maxScrollY;
} else if (this.y > (this.maxScrollY + ) && pullUpEl.className.match('flip')) {
pullUpEl.className = '';
pullUpEl.querySelector('.pullUpLabel').innerHTML = '上拉加载更多...';
this.maxScrollY = pullUpOffset;
}
},
onScrollEnd: function () {
if (pullDownEl.className.match('flip')) {
pullDownEl.className = 'loading';
pullDownEl.querySelector('.pullDownLabel').innerHTML = '加载中...';
pullDownAction(); // Execute custom function (ajax call?)
} else if (pullUpEl.className.match('flip')) {
if ($("#pullUp").attr("attrVal") == "") return; //无更多数据的时候上拉加载更多直接return
pullUpEl.className = 'loading';
pullUpEl.querySelector('.pullUpLabel').innerHTML = '加载中...';
pullUpAction(); // Execute custom function (ajax call?)
}
}
}); //myscroll实例化完之后置为true
myScrollFlag = true; setTimeout(function () {
document.getElementById('wrapper').style.left = '';
}, );
} document.addEventListener('touchmove', function (e) {
e.preventDefault();
}, {passive: false}); document.addEventListener('DOMContentLoaded', function () {
setTimeout(loaded, );
}, false);
</script>

利用iscroll实现上拉加载下拉刷新的更多相关文章

  1. Vue mint ui用在消息页面上拉加载下拉刷新loadmore 标记

    之前总结过一个页面存在多个下拉加载的处理方式,今天再来说一下在消息页面的上拉加载和下拉刷新,基本上每个app都会有消息页面,会遇到这个需求 需求:每次加载十条数据,上拉加载下拉刷新,并且没有点击查看过 ...

  2. 上拉加载下拉刷新控件WaterRefreshLoadMoreView

    上拉加载下拉刷新控件WaterRefreshLoadMoreView 效果: 源码: // // SRSlimeView // @author SR // Modified by JunHan on ...

  3. RecyclerView 上拉加载下拉刷新

    RecyclerView 上拉加载下拉刷新 <android.support.v4.widget.SwipeRefreshLayout android:id="@+id/teach_s ...

  4. APICloud上啦加载下拉刷新模块

    apicloud有自带的上啦加载下拉刷新,当让也可以用第三方或者在模块库里面找一个使用 一.下拉刷新,一下代码写在 apiready = function (){} 里面 apiready = fun ...

  5. 微信小程序上拉加载下拉刷新

    微信小程序实现上拉加载下拉刷新 使用小程序默认提供方法. (1). 在xxx.json 中开启下拉刷新,需要设置backgroundColor,或者是backgroundTextStyle ,因为加载 ...

  6. mui scroll和上拉加载/下拉刷新

    mui中 scroll和上拉加载/下拉刷新同时存在会出现两个滚动条 把/*   */ /* //mui页面鼠标拖动代码: mui('.mui-scroll-wrapper').scroll({ dec ...

  7. zepto.js + iscroll.js上拉加载 下拉加载的 移动端 新闻列表页面

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name ...

  8. 学习 | iscroll之上拉加载下拉刷新

    引入文件顺序 1.zepto 2.iscroll.js 3.scroll-probe.js 链接 完整代码:https://github.com/dirkhe1051931999/writeBlog/ ...

  9. SwipeRefreshLayout实现上拉加载下拉刷新

    package com.example.swiperefreshlayoutdemo; import java.util.ArrayList;import java.util.HashMap; imp ...

随机推荐

  1. 从LIst集合中安全的删除元素

    package cn.rocker.list; import java.util.ArrayList; import java.util.Iterator; import java.util.List ...

  2. Shell中变量扩展操作

    假设我们定义了一个变量为:file=/dir1/dir2/dir3/my.file.txt 可以用${ }分别替换得到不同的值:${file#*/}:删掉第一个 / 及其左边的字符串:dir1/dir ...

  3. Debugger for chrome

    Debugger In VScode Getting Started Install the extension Debugger for chrome Config the launch.json ...

  4. ssm+maven+pageHelper搭建maven项目实现快速分页

    ssm+maven+pageHelper搭建maven项目实现快速分页 PageHelper分页使用: 插件的环境引入: 1.pom文件中引入分页插件的资源位置: <dependency> ...

  5. System.ComponentModel.DataAnnotations.Schema.TableAttribute 同时存在于EntityFramework.dll和System.ComponentModel.DataAnnotations.dll中

    Entity Framework 与 .net4.5 的 System.ComponentModel.DataAnnotations 都有 System.ComponentModel.DataAnno ...

  6. 细说shiro之三:在独立应用中使用shiro

    官网:https://shiro.apache.org/ 1. 下载在非Web环境的独立应用中使用Shiro时,只需要shiro-core组件.在Maven项目中的依赖配置如下: <depend ...

  7. 二叉树的python可视化和常用操作代码

    二叉树是一个重要的数据结构, 本文基于"二叉查找树"的python可视化 pybst 包, 做了一些改造, 可以支持更一般的"二叉树"可视化. 关于二叉树和二叉 ...

  8. .net 使用oracle 的存储过程有返回值也有数据集(游标)

    public void GetData(string username, string userip, string userkey, string userareaid, string ypid, ...

  9. 在vscode上 运行typescript 文件

    安装nodejs 安装链接: https://nodejs.org/zh-cn/ 安装测试: node -v npm -v 安装typescript sudo npm install typescri ...

  10. Coursera Deep Learning 2 Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization - week2, Assignment(Optimization Methods)

    声明:所有内容来自coursera,作为个人学习笔记记录在这里. 请不要ctrl+c/ctrl+v作业. Optimization Methods Until now, you've always u ...