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 判断页面元素是否存在的代码
Aug 14 Javascript
基于Unit PNG Fix.js有时候在ie6下不正常的解决办法
Jun 26 Javascript
JavaScript全排列的六种算法 具体实现
Jun 29 Javascript
如何使用Jquery获取Form表单中被选中的radio值
Aug 09 Javascript
js 通过html()及text()方法获取并设置p标签的显示值
May 14 Javascript
JS实现固定在右下角可展开收缩DIV层的方法
Feb 13 Javascript
javascript 注释代码的几种方法总结
Jan 04 Javascript
webpack-dev-server自动更新页面方法
Feb 22 Javascript
BootStrap模态框闪退问题实例代码详解
Dec 10 Javascript
vue-cli 目录结构详细讲解总结
Jan 15 Javascript
gulp构建小程序的方法步骤
May 31 Javascript
vue 中的动态传参和query传参操作
Nov 09 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缩略图生成程式(需要GD库支持)
2007/03/06 PHP
Pain 全世界最小最简单的PHP模板引擎 (普通版)
2011/10/23 PHP
PHP批量采集下载美女图片的实现代码
2013/06/03 PHP
CI(CodeIgniter)框架中的增删改查操作
2014/06/10 PHP
PHP 读取和编写 XML
2014/11/19 PHP
php数组键名技巧小结
2015/02/17 PHP
PHP PDOStatement::nextRowset讲解
2019/02/01 PHP
关于Laravel参数验证的一些疑与惑
2019/11/19 PHP
web前端开发也需要日志
2010/12/09 Javascript
jquery 结合C#后台的数组对文章的关键字自动添加链接的代码
2011/07/15 Javascript
javascript实现图片切换的幻灯片效果源代码
2012/12/12 Javascript
JQuery中层次选择器用法实例详解
2015/05/18 Javascript
Javascript实现字数统计
2015/07/03 Javascript
30分钟快速掌握Bootstrap框架
2016/05/24 Javascript
js仿微信语音播放实现思路
2016/12/12 Javascript
JS填写银行卡号每隔4位数字加一个空格
2016/12/19 Javascript
angular.JS实现网页禁用调试、复制和剪切
2017/03/31 Javascript
js实现首屏延迟加载实现方法 js实现多屏单张图片延迟加载效果
2017/07/17 Javascript
js使用ajax传值给后台,后台返回字符串处理方法
2018/08/08 Javascript
在Create React App中使用CSS Modules的方法示例
2019/01/15 Javascript
vue中实现点击按钮滚动到页面对应位置的方法(使用c3平滑属性实现)
2019/12/29 Javascript
vue自定义组件(通过Vue.use()来使用)即install的用法说明
2020/08/11 Javascript
Python数据类型详解(一)字符串
2016/05/08 Python
python @property的用法及含义全面解析
2018/02/01 Python
python检测空间储存剩余大小和指定文件夹内存占用的实例
2018/06/11 Python
python3.6生成器yield用法实例分析
2019/08/23 Python
python的命名规则知识点总结
2019/10/04 Python
python单向循环链表原理与实现方法示例
2019/12/03 Python
python爬虫工具例举说明
2020/11/30 Python
基于 Python 实践感知器分类算法
2021/01/07 Python
会走动的图形html5时钟示例
2014/04/27 HTML / CSS
巴西最大的家具及装饰用品店:Mobly
2017/10/11 全球购物
.NET remoting的两种通道是什么
2016/05/31 面试题
企业文化宣传标语
2014/06/09 职场文书
调研汇报材料范文
2014/08/17 职场文书
PyTorch 如何自动计算梯度
2021/05/23 Python