JavaScript仿微信(电话)联系人列表滑动字母索引实例讲解(推荐)


Posted in Javascript onAugust 16, 2017

今天做到了一个联系人列表的需求, 要求和微信的一样! 写出来分享给大家, 使用了jq和doT模版引擎

JavaScript仿微信(电话)联系人列表滑动字母索引实例讲解(推荐)

首先对数据源进行数据排序

// 数据排序
 function sortData(data) {
  var letterArr = [];
  for (var i = 0; i < data.length; i++) {
   for (var j = 0; j < data.length; j++) {
    if (data[i].flag < data[j].flag) {
     var temp = data[i];
     data[i] = data[j];
     data[j] = temp;
    }
   }
   }
   if (f_check_uppercase(data[0].flag)) {
   letterArr.push(data[0].flag)
   } else {
   letterArr.push('#')
   }
  for (var i = 0; i < data.length; i++) {
   if(f_check_uppercase(data[0].flag)) {
    data[0].flagLetter = data[0].flag
   } else {
    data[0].flagLetter = '#'
   }
   if (i>0) {
    if (data[i].flag !== data[i-1].flag) {
     if (f_check_uppercase(data[i].flag)) {
      data[i].flagLetter = data[i].flag;
      letterArr.push(data[i].flag)
     } else {
      data[i].flagLetter = '#';
      letterArr.push('#')
     }
    }
   }
   }
// 侧边栏
   var str = '' ;
   for (var i = 0; i < letterArr.length; i++) {
   str += '<a ontouchstart="anchorJump(this)" >'+ letterArr[i] +'</a>'
   }
   $('.slidePage div').html(str)
   $('.resultList').html(doT.template($('#listT').text())(data))
 }
 // 判断是否是字母
 function f_check_uppercase(obj) {
  if (/[A-Z]/.test(obj)) { 
   return true; 
  } 
  return false; 
 }

然后是跳转锚点

location.hash = '#id' 和a标签的作用相同, 跳转到指定锚点

// 跳转锚点
 function anchorJump(n) {
  var text = $(n).text();
  if (text.length < 2) {
   $('.letter').text(text)
   $('.letter').css({'opacity':' 1'})
   location.hash = '#' + text
  }
 }

手指滑动, 页面跳转

// 手指滑动
 function move() {
  // 阻止默认事件, 页面滑动
  event.preventDefault();
  anchorJump(document.elementFromPoint(event.changedTouches[0].clientX,event.changedTouches[0].clientY))
 }

document.elementFromPoint(x,y) 获取指定坐标的顶层元素

最后滑动结束, 手指离开屏幕

// 滑动结束
 function touchEnd() {
  var opcityNum = 1;
  setInterval(function () {
   opcityNum -= 0.1;
   if (opcityNum > 0) {
    $('.letter').css({'opacity': opcityNum})
   } else {
    clearInterval();
   }
  },50)
 }

点击每条数据

// 点击事件
 function clickInfo(ele) {
  alert($(ele).find('.name').text())
 }

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助~如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持!

Javascript 相关文章推荐
Javascript学习笔记二 之 变量
Dec 15 Javascript
js自动生成的元素与页面原有元素发生堆叠的解决方法
Oct 24 Javascript
jQuery 跨域访问解决原理案例详解
Jul 09 Javascript
JS获取中文拼音首字母并通过拼音首字母快速查找页面内对应中文内容的方法【附demo源码】
Aug 19 Javascript
angular2倒计时组件使用详解
Jan 12 Javascript
JavaScript实现图片拖曳效果
Sep 08 Javascript
jQuery实现的粘性滚动导航栏效果实例【附源码下载】
Oct 19 jQuery
Bootstrap实现翻页效果
Nov 27 Javascript
Angular2实现的秒表及改良版示例
May 10 Javascript
js中的面向对象之对象常见创建方法详解
Dec 16 Javascript
JS实现简单的表格增删
Jan 16 Javascript
Vue中强制组件重新渲染的正确方法
Jan 03 Vue.js
理解 Node.js 事件驱动机制的原理
Aug 16 #Javascript
JavaScript选取(picking)和反选(rejecting)对象的属性方法
Aug 16 #Javascript
JavaScript-定时器0~9抽奖系统详解(代码)
Aug 16 #Javascript
vue实现留言板todolist功能
Aug 16 #Javascript
Angularjs中的验证input输入框只能输入数字和小数点的写法(推荐)
Aug 16 #Javascript
vue的事件绑定与方法详解
Aug 16 #Javascript
vue父组件通过props如何向子组件传递方法详解
Aug 16 #Javascript
You might like
牡丹941资料
2021/03/01 无线电
关于PHP堆栈与列队的学习
2013/06/21 PHP
PHP冒泡算法详解(递归实现)
2014/11/10 PHP
Yii框架中memcache用法实例
2014/12/03 PHP
php函数mkdir实现递归创建层级目录
2016/10/27 PHP
PHP实现的操作数组类库定义与用法示例
2019/05/24 PHP
laravel 实现用户登录注销并限制功能
2019/10/24 PHP
prettify 代码高亮着色器google出品
2010/12/28 Javascript
JavaScript高级程序设计阅读笔记(五) ECMAScript中的运算符(一)
2012/02/27 Javascript
使用javascript:将其它类型值转换成布尔类型值的解决方法详解
2013/05/07 Javascript
原生JS实现仿淘宝网左侧商品分类菜单效果代码
2015/09/10 Javascript
bootstrap选项卡使用方法解析
2017/01/11 Javascript
JS实现中国公民身份证号码有效性验证
2017/02/20 Javascript
angular.js指令中transclude选项及ng-transclude指令详解
2017/05/24 Javascript
jQuery实现全选、反选和不选功能
2017/08/16 jQuery
jQuery实现可兼容IE6的滚动监听功能
2017/09/20 jQuery
Vue检测屏幕变化来改变不同的charts样式实例
2020/10/26 Javascript
JavaScript字符串转数字的简单实现方法
2020/11/27 Javascript
Python time模块详解(常用函数实例讲解,非常好)
2014/04/24 Python
浅谈numpy中linspace的用法 (等差数列创建函数)
2017/06/07 Python
python判断数字是否是超级素数幂
2018/09/27 Python
python实现剪切功能
2019/01/23 Python
对Python中画图时候的线类型详解
2019/07/07 Python
Python使用type关键字创建类步骤详解
2019/07/23 Python
PyCharm 2020 激活到 2100 年的教程
2020/03/25 Python
Python爬虫爬取、解析数据操作示例
2020/03/27 Python
浅谈Django QuerySet对象(模型.objects)的常用方法
2020/03/28 Python
基于Python绘制个人足迹地图
2020/06/01 Python
Python实现一个简单的毕业生信息管理系统的示例代码
2020/06/08 Python
Python unittest装饰器实现原理及代码
2020/09/08 Python
家得宝墨西哥官网:The Home Depot墨西哥
2019/11/18 全球购物
大专毕业生自我评价分享
2013/11/10 职场文书
JAVA程序员自荐书
2014/01/30 职场文书
《北大荒的秋天》教学反思
2014/04/14 职场文书
企业公益活动策划方案
2014/08/24 职场文书
《家庭教育》读后感3篇
2019/12/18 职场文书