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 相关文章推荐
Jquery中LigerUi的弹出编辑框(实现方法)
Jul 09 Javascript
JavaScript中prototype为对象添加属性的误区介绍
Oct 15 Javascript
javascript实现仿腾讯游戏选择
May 14 Javascript
深入理解JS正则表达式---分组
Jul 18 Javascript
js手机号批量滚动抽奖实现代码
Apr 17 Javascript
Bootstrap面板学习使用
Feb 09 Javascript
vue loadmore组件上拉加载更多功能示例代码
Jul 19 Javascript
解决Jstree 选中父节点时被禁用的子节点也会选中的问题
Dec 27 Javascript
jquery 获取索引值在一定范围的列表方法
Jan 25 jQuery
彻底理解js面向对象之继承
Feb 04 Javascript
vue实现输入框的模糊查询的示例代码(节流函数的应用场景)
Sep 01 Javascript
Vue 解决在element中使用$notify在提示信息中换行问题
Nov 11 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
常见的5个PHP编码小陋习以及优化实例讲解
2021/02/27 PHP
RR vs IO BO3 第二场2.13
2021/03/10 DOTA
学习YUI.Ext基础第一天
2007/03/10 Javascript
前淘宝前端开发工程师阿当的PPT中有JS技术理念问题
2010/01/15 Javascript
javascript 冒泡排序 正序和倒序实现代码
2010/12/14 Javascript
javascript中的void运算符语法及使用介绍
2013/03/10 Javascript
js实现广告漂浮效果的小例子
2013/07/02 Javascript
windows下安装nodejs及框架express
2015/08/07 NodeJs
第一次接触神奇的Bootstrap导航条
2016/08/09 Javascript
bootstrap与Jquery UI 按钮样式冲突的解决办法
2016/09/23 Javascript
vue2.0开发实践总结之入门篇
2016/12/06 Javascript
JS数组排序方法实例分析
2016/12/16 Javascript
javascript显示系统当前时间代码
2016/12/29 Javascript
javascript DOM的详解及实例代码
2017/03/06 Javascript
Vue 兄弟组件通信的方法(不使用Vuex)
2017/10/26 Javascript
vue的style绑定background-image的方式和其他变量数据的区别详解
2018/09/03 Javascript
js实现随机div颜色位置 类似满天星效果
2019/10/24 Javascript
vue-router 按需加载 component: () => import() 报错的解决
2020/09/22 Javascript
[52:05]EG vs OG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
用Python程序抓取网页的HTML信息的一个小实例
2015/05/02 Python
python字典快速保存于读取的方法
2018/03/23 Python
python 在某.py文件中调用其他.py内的函数的方法
2019/06/25 Python
Python编写打字训练小程序
2019/09/26 Python
wxpython绘制圆角窗体
2019/11/18 Python
Tensorflow 自定义loss的情况下初始化部分变量方式
2020/01/06 Python
如何使用python socket模块实现简单的文件下载
2020/09/04 Python
HTML5仿手机微信聊天界面
2016/03/18 HTML / CSS
美国男士西装打折店:Jos. A. Bank
2017/11/13 全球购物
Notino意大利:购买香水和化妆品
2018/11/14 全球购物
护士进修自我鉴定
2014/02/07 职场文书
九一八事变演讲稿范文
2014/09/14 职场文书
工作失职造成投诉的检讨书范文
2014/10/05 职场文书
奖学金个人总结
2015/03/04 职场文书
成品仓库管理员岗位职责
2015/04/09 职场文书
全新239军机修复记
2022/04/05 无线电
Nginx文件已经存在全局反向代理问题排查记录
2022/07/15 Servers