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 相关文章推荐
Jquery获得控件值的三种方法总结
Feb 13 Javascript
javascript实现ecshop搜索框键盘上下键切换控制
Mar 18 Javascript
Jquery实现遮罩层的方法
Jun 08 Javascript
jQuery实现form表单元素序列化为json对象的方法
Dec 09 Javascript
vue component组件使用方法详解
Jul 14 Javascript
JScript实现地址选择功能
Aug 15 Javascript
javascript实现最长公共子序列实例代码
Feb 05 Javascript
浅谈webpack打包之后的文件过大的解决方法
Mar 07 Javascript
使用Angular自定义字段校验指令的方法示例
Feb 01 Javascript
vue中axios的二次封装实例讲解
Oct 14 Javascript
基于JS实现table导出Excel并保留样式
May 19 Javascript
详解vue父子组件状态同步的最佳方式
Sep 10 Javascript
理解 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
PHP初学者头疼问题总结
2006/10/09 PHP
PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明
2011/12/05 PHP
关于查看MSSQL 数据库 用户每个表 占用的空间大小
2013/06/21 PHP
PHP获取mysql数据表的字段名称和详细信息的方法
2014/09/27 PHP
php继承中方法重载(覆盖)的应用场合
2015/02/09 PHP
php中二维数组排序问题方法详解
2015/08/28 PHP
PHP使用curl函数发送Post请求的注意事项
2016/11/26 PHP
php中文乱码问题的终极解决方案汇总
2017/08/01 PHP
PHP信号处理机制的操作代码讲解
2019/04/19 PHP
Laravel框架Eloquent ORM删除数据操作示例
2019/12/03 PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
2020/04/04 PHP
ExtJs GridPanel简单的增删改实现代码
2010/08/26 Javascript
情人节专属 纯js脚本1k大小的3D玫瑰效果
2012/02/11 Javascript
jquery 层次选择器siblings与nextAll的区别介绍
2013/08/02 Javascript
Jquery Uploadify多文件上传带进度条且传递自己的参数
2013/08/28 Javascript
window.location.href中url中数据量太大时的解决方法
2013/12/23 Javascript
javascript模拟php函数in_array
2015/04/27 Javascript
程序员必知35个jQuery 代码片段
2015/11/05 Javascript
Javascript实现图片懒加载插件的方法
2016/10/20 Javascript
使用snowfall.jquery.js实现爱心满屏飞的效果
2017/01/05 Javascript
完美解决axios在ie下的兼容性问题
2018/03/05 Javascript
浅谈在vue中使用mint-ui swipe遇到的问题
2018/09/27 Javascript
基于JavaScript实现随机点名器
2021/02/25 Javascript
[03:20]2015国际邀请赛全明星表演赛
2015/08/08 DOTA
Python内置的字符串处理函数整理
2013/01/29 Python
python中实现php的var_dump函数功能
2015/01/21 Python
python实时分析日志的一个小脚本分享
2017/05/07 Python
使用python代码进行身份证号校验的实现示例
2019/11/21 Python
HTML5+CSS3 诱人的实例:3D立方体旋转动画实例
2016/12/30 HTML / CSS
茵宝(Umbro)英国官方商店:英国足球服装生产商
2016/12/29 全球购物
C语言变量的命名规则都有哪些
2013/12/27 面试题
大学生四个方面的自我评价
2013/09/19 职场文书
结婚典礼致辞
2015/07/28 职场文书
解析目标检测之IoU
2021/06/26 Python
前端JavaScript大管家 package.json
2021/11/02 Javascript
threejs太阳光与阴影效果实例代码
2022/04/05 Javascript