JQuery插件iScroll实现下拉刷新,滚动翻页特效
来源: 阅读:8676 次 日期:2014-07-17 19:17:23
温馨提示: 小编为您整理了“JQuery插件iScroll实现下拉刷新,滚动翻页特效”,方便广大网友查阅!

JQuery插件:iScroll

页面布局:

<div id="wrapper">

  <div id="scroller">

   <div id="pullDown">

    <span class="pullDownIcon"></span><span class="pullDownLabel">下拉刷新...</span>

   </div>

   <ul id="thelist">

    <li>

     <img src="img/page1_img1.jpg" />

    </li>

    <li>

     <img src="img/page1_img2.jpg" />

    </li>

    <li>

     <img src="img/page1_img3.jpg" />

    </li>

    <li>

     <img src="img/page1_img1.jpg" />

    </li>

    <li>

     <img src="img/page1_img2.jpg" />

    </li>

    <li>

     <img src="img/page1_img3.jpg" />

    </li>

   </ul>

   <div id="pullUp">

    <span class="pullUpIcon"></span><span class="pullUpLabel">上拉加载更多...</span>

   </div>

  </div>翻页,是通过ajax请求,把页码传入一般处理程序,在一般处理程序中获得分页后的数据返回json数组对象。

下拉刷新:

/**

  * 下拉刷新 (自定义实现此方法)

  * myScroll.refresh(); // 数据加载完成后,调用界面更新方法

  */

  function pullDownAction() {

   setTimeout(function () {

    var el, li, i;

    el = document.getElementById('thelist');

    //==========================================

    $.ajax({

     type: "GET",

     url: "LoadMore.ashx",

     data: { page: generatedCount },

     dataType: "json",

     success: function (data) {

      var json = data;

      $(json).each(function () {

       li = document.createElement('li');

       // li.innerText = 'Generated row ' + (++generatedCount);

       li.innerHTML = '<img src="' + this.src + '"/>';

       el.insertBefore(li, el.childNodes[0]);

      })

     }

    });

    myScroll.refresh(); //数据加载完成后,调用界面更新方法  Remember to refresh when contents are loaded (ie: on ajax completion)

   }, 1000);  // <-- Simulate network congestion, remove setTimeout from production!

  }上拉刷新

function pullUpAction() {

   setTimeout(function () { 

    var el, li, i;

    el = document.getElementById('thelist');

    //==========================================

    $.ajax({

     type: "GET",

     url: "LoadMore.ashx",

     data: { page: generatedCount },

     dataType: "json",

     success: function (data) {

      var json = data;

      $(json).each(function () {

       li = document.createElement('li');

       //  li.innerText = 'Generated row ' + (++generatedCount);

       li.innerHTML = '<img src="' + this.src + '"/>;    

       el.insertBefore(li, el.childNodes[0]);

      })

     }

    });

    //============================================

    myScroll.refresh(); // 数据加载完成后,调用界面更新方法 Remember to refresh when contents are loaded (ie: on ajax completion)

   }, 1000); // <-- Simulate network congestion, remove setTimeout from production!

  }初始化

/**

  * 初始化iScroll控件

  */

  function loaded() {

   pullDownEl = document.getElementById('pullDown');

   pullDownOffset = pullDownEl.offsetHeight;

   pullUpEl = document.getElementById('pullUp');

   pullUpOffset = pullUpEl.offsetHeight;

   myScroll = new iScroll('wrapper', {

    scrollbarClass: 'myScrollbar', /* 重要样式 */

    useTransition: false,

    topOffset: pullDownOffset,

    onRefresh: function () {

     if (pullDownEl.className.match('loading')) {

      pullDownEl.className = '';

      pullDownEl.querySelector('.pullDownLabel').innerHTML = '下拉刷新...';

     } else if (pullUpEl.className.match('loading')) {

      pullUpEl.className = '';

      pullUpEl.querySelector('.pullUpLabel').innerHTML = '上拉加载更多...';

     }

    },

    onScrollMove: function () {

     if (this.y > 5 && !pullDownEl.className.match('flip')) {

      pullDownEl.className = 'flip';

      pullDownEl.querySelector('.pullDownLabel').innerHTML = '松手开始更新...';

      this.minScrollY = 0;

     } else if (this.y < 5 && pullDownEl.className.match('flip')) {

      pullDownEl.className = '';

      pullDownEl.querySelector('.pullDownLabel').innerHTML = '下拉刷新...';

      this.minScrollY = -pullDownOffset;

     } else if (this.y < (this.maxScrollY - 5) && !pullUpEl.className.match('flip')) {

      pullUpEl.className = 'flip';

      pullUpEl.querySelector('.pullUpLabel').innerHTML = '松手开始更新...';

      this.maxScrollY = this.maxScrollY;

     } else if (this.y > (this.maxScrollY + 5) && 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')) {

      pullUpEl.className = 'loading';

      pullUpEl.querySelector('.pullUpLabel').innerHTML = '加载中...';

      pullUpAction(); // Execute custom function (ajax call?)

     }

    }

   });

   setTimeout(function () { document.getElementById('wrapper').style.left = '0'; }, 800);

  }

  //初始化绑定iScroll控件

  document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);

  document.addEventListener('DOMContentLoaded', loaded, false);

更多信息请查看IT技术专栏

更多信息请查看网络编程
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!

2025国考·省考课程试听报名

  • 报班类型
  • 姓名
  • 手机号
  • 验证码
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map