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
Apr 18 Javascript
AngularJS入门教程(二):AngularJS模板
Dec 06 Javascript
详解JavaScript的策略模式编程
Jun 24 Javascript
JavaScript实现节点的删除与序号重建实例
Aug 05 Javascript
JS实现常见的TAB、弹出层效果(TAB标签,斑马线,遮罩层等)
Oct 08 Javascript
javascript检测flash插件是否被禁用的方法
Jan 14 Javascript
iScroll.js 使用方法参考
May 16 Javascript
wap手机端解决返回上一页的js实例
Dec 08 Javascript
在vue中使用jointjs的方法
Mar 24 Javascript
vue axios数据请求及vue中使用axios的方法
Sep 10 Javascript
layui树形菜单动态遍历的例子
Sep 23 Javascript
webpack+express实现文件精确缓存的示例代码
Jun 11 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
要会喝咖啡也要会知道咖啡豆
2021/03/03 咖啡文化
php中输出json对象的值(实现方法)
2018/03/07 PHP
php用wangeditor3实现图片上传功能
2019/08/22 PHP
用倒置滤镜把div倒置,再把table倒置。
2007/07/31 Javascript
基于jquery 的一个progressbar widge
2010/10/29 Javascript
Prototype源码浅析 String部分(三)之HTML字符串处理
2012/01/15 Javascript
8款非常棒的响应式jQuery 幻灯片插件推荐
2012/02/02 Javascript
Jquery图形报表插件 jqplot简介及参数详解
2012/10/10 Javascript
JavaScript设计模式之适配器模式介绍
2014/12/28 Javascript
jquery利用命名空间移除绑定事件的方法
2015/03/11 Javascript
JavaScript代码里的判断小结
2016/08/22 Javascript
详解前后端分离之VueJS前端
2017/05/24 Javascript
jQuery实现下拉菜单的实例代码
2017/06/19 jQuery
如何将 jQuery 从你的 Bootstrap 项目中移除(取而代之使用Vue.js)
2017/07/17 jQuery
Spring boot 和Vue开发中CORS跨域问题解决
2018/09/05 Javascript
详解如何制作并发布一个vue的组件的npm包
2018/11/10 Javascript
用jQuery将JavaScript对象转换为querystring查询字符串的方法
2018/11/12 jQuery
layui动态绑定事件的方法
2019/09/20 Javascript
在vue中实现给每个页面顶部设置title
2020/07/29 Javascript
一篇文章看懂JavaScript中的回调
2021/01/05 Javascript
[09:40]DAC2018 4.5 SOLO赛 MidOne vs Miracle
2018/04/06 DOTA
将tensorflow的ckpt模型存储为npy的实例
2018/07/09 Python
Python使用pandas对数据进行差分运算的方法
2018/12/22 Python
python使用Paramiko模块实现远程文件拷贝
2019/04/30 Python
解决Django Static内容不能加载显示的问题
2019/07/28 Python
HTML5 Canvas实现烟花绽放特效
2016/03/02 HTML / CSS
描述内存分配方式以及它们的区别
2016/10/15 面试题
环保建议书500字
2014/05/14 职场文书
2014年度党员自我评议
2014/09/13 职场文书
2014年局领导班子自身建设情况汇报
2014/11/21 职场文书
2016年小学生教师节广播稿
2015/12/18 职场文书
2016年禁毒宣传活动总结
2016/04/05 职场文书
基于PyTorch实现一个简单的CNN图像分类器
2021/05/29 Python
淡雅古典唯美少女娇媚宁静迷人写真
2022/03/21 杂记
【海涛七七解说】DCG第二周:DK VS 天禄
2022/04/01 DOTA
windows系统搭建WEB服务器详细教程
2022/08/05 Servers