jQuery教程 $()包装函数来实现数组元素分页效果


Posted in Javascript onAugust 13, 2013

最近一周在做中文站搜索礼品widget的需求,这个需求中有一个分页的功能;具体demo可以参见下图:

jQuery教程 $()包装函数来实现数组元素分页效果

对应的js应用文件是同一个,页面中后面的offer数据已经埋好了,只是启用了css display:none样式把后面的offer元素隐藏了。现在要求对已存在的页面元素实现上下分页效果,也就是页面元素总集可以通过$(.class)获得,然后来实现分页功能。

按照传统的一般做法,用jQuery可写成如下:

var total=$(.class).length; //取得需要分页的元素的总个数
var radio=3;//根据宽窄屏获得每页显示offer条数:
var pageSize=parseInt(total/radio); //获得总页数;
if(total % radio !=0){
   pageSize+=1;  
}
var currentPage=1;  //当前页为第一页
//向前翻页的代码:
$(.leftArrow,parentElem).bind('click',function(e){
var index=currentPage-1;
   if(currentPage==1){
     return;
   }else{
      $(.class).css('display','none');
      var elemIndex=index*radio; //数组中起始要显示的元素的指针
       $(.class).eq(elemIndex).css('display','');
        $(.class).eq(elemIndex+1).css('display','');
        $(.class).eq(elemIndex+2).css('display','');
        //上面三句代码可用next()重写成   
        //$(.class).eq(elemIndex).css('display','')
        //  .next().css('display','')
        //  .next()..css('display','');     
    currentPage=index;
   }
})
//向后翻页的代码:
$(.rightArrow,parentElem).bind('click',function(e){
var index=currentPage+1;
   if(currentPage==pageSize){
     return;
   }else{
      $(.class).css('display','none');
      var elemIndex=index*radio; //数组中起始要显示的元素的指针      
        $(.class).eq(elemIndex).css('display','');
        $(.class).eq(elemIndex+1).css('display','');
        $(.class).eq(elemIndex+2).css('display','');
       //上面三句代码可用next()重写成   
        //$(.class).eq(elemIndex).css('display','')
        //  .next().css('display','')
        //  .next()..css('display','');  
    currentPage=index;
   }
})

大家发现没有,在向后翻页的代码中,无论最后一页只有1条offer,2条offer,还是全部3条offer,我都用同样的代码,不做任何判断

$(.class).eq(elemIndex).css('display',");
$(.class).eq(elemIndex+1).css('display',");
$(.class).eq(elemIndex+2).css('display',");

这3条语句连续调用。

也就是说,elemIndex有可能越界,即elemIndex>$(.class).length,即使在这样的情况下,$(.class).eq(elemIndex+1).css('display',")照样没有问题,浏览器不会报错,js照常执行,最终结果照样能完美展示。这要感谢jQuery的包装函数产生的juery对象,如果elemIndex>=$(.class).length,$(.class).eq(elemIndex+1)返回的是一个空jquery元素对象,虽然它没有对应到DOM中的元素,但它还是一个jQuery对象,因此调用.css()方法不会出错,虽然页面没有任何变化效果;

通过这个例子,就能够理解为什么jQuey对不匹配的元素仍然返回jQuery Object,而不是null,这种思想对数组分页操作来说,提供了极大的便利性,因为避免了数组索引越界引起程序错误,导致js中断执行的情况,简化了分页代码中大量的数组索引越界判断。

Javascript 相关文章推荐
JavaScript取得鼠标绝对位置程序代码介绍
Sep 16 Javascript
理解Javascript的call、apply
Dec 16 Javascript
深入浅析JavaScript面向对象和原型函数
Feb 06 Javascript
JS组件系列之Bootstrap table表格组件神器【二、父子表和行列调序】
May 10 Javascript
jQuery插件开发发送短信倒计时功能代码
May 09 jQuery
基于Vue单文件组件详解
Sep 15 Javascript
JS基于递归实现网页版计算器的方法分析
Dec 20 Javascript
vue动态路由配置及路由传参的方式
May 23 Javascript
JavaScript继承与多继承实例分析
May 26 Javascript
JavaScript或jQuery 获取option value值方法解析
May 12 jQuery
基于js实现的图片拖拽排序源码实例
Nov 04 Javascript
js实现缓动动画
Nov 25 Javascript
jQuery lazyLoad图片延迟加载插件的优化改造方法分享
Aug 13 #Javascript
js setTimeout 参数传递使用介绍
Aug 13 #Javascript
js setTimeout 常见问题小结
Aug 13 #Javascript
删除select中所有option选项jquery代码
Aug 12 #Javascript
js获取本机的外网/广域网ip地址完整源码
Aug 12 #Javascript
JavaScript解析URL参数示例代码
Aug 12 #Javascript
JS实现Enter键跳转及控件获得焦点
Aug 12 #Javascript
You might like
php堆排序(heapsort)练习
2013/11/13 PHP
php 问卷调查结果统计
2015/10/08 PHP
PHP中类的自动加载的方法
2017/03/17 PHP
对php 判断http还是https,以及获得当前url的方法详解
2019/01/15 PHP
PHP MVC框架中类的自动加载机制实例分析
2019/09/18 PHP
javascript 字符串连接的性能问题(多浏览器)
2008/11/18 Javascript
自己写了一个展开和收起的多更能型的js效果
2013/03/05 Javascript
jQuery的slideToggle方法实例
2013/05/07 Javascript
解析javascript 数组以及json元素的添加删除
2013/06/26 Javascript
模拟多级复选框效果的jquery代码
2013/08/13 Javascript
jQuery焦点图切换简易插件制作过程全纪录
2014/08/27 Javascript
用js判断是否为360浏览器的实现代码
2015/01/15 Javascript
浅谈jQuery 中的事件冒泡和阻止默认行为
2016/05/28 Javascript
详解jQuery事件
2017/01/13 Javascript
canvas绘制表盘时钟
2017/01/23 Javascript
Nodejs之http的表单提交
2017/07/07 NodeJs
JS 仿支付宝input文本输入框放大组件的实例
2017/11/14 Javascript
解决vuejs项目里css引用背景图片不能显示的问题
2018/09/13 Javascript
Vue中JS动画与Velocity.js的结合使用
2019/02/13 Javascript
JS/jQuery实现获取时间的方法及常用类完整示例
2019/03/07 jQuery
如何写好一个vue组件,老夫的一年经验全在这了(推荐)
2019/05/18 Javascript
浅析python 内置字符串处理函数的使用方法
2014/06/11 Python
python获得文件创建时间和修改时间的方法
2015/06/30 Python
wxPython之解决闪烁的问题
2018/01/15 Python
Python实现的井字棋(Tic Tac Toe)游戏示例
2018/01/31 Python
python 字符串和整数的转换方法
2018/06/25 Python
Python爬虫实现模拟点击动态页面
2020/03/05 Python
Python ATM功能实现代码实例
2020/03/19 Python
HTML5离线缓存在tomcat下部署可实现图片flash等离线浏览
2012/12/13 HTML / CSS
香港最新科技与优质家居产品购物网站:J SELECT
2018/08/21 全球购物
27个经典Linux面试题及答案,你知道几个?
2014/03/11 面试题
技校学生个人职业生涯规划范文
2014/03/03 职场文书
关于读书的活动方案
2014/08/14 职场文书
工作计划范文之财务管理
2019/08/09 职场文书
Pytorch 如何实现LSTM时间序列预测
2021/05/17 Python
nginx部署多前端项目的几种方法
2021/05/25 Servers