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 相关文章推荐
HTML IMG标签 onload 内存溢出导致浏览器CPU占用过高
Mar 09 Javascript
深入解析JavaScript中的变量作用域
Dec 06 Javascript
JavaScript使用setInterval()函数实现简单轮询操作的方法
Feb 02 Javascript
学习Bootstrap组件之下拉菜单
Jul 28 Javascript
AngularJS directive返回对象属性详解
Mar 28 Javascript
jQuery实现jQuery-form.js实现异步上传文件
Apr 28 jQuery
Vue框架中正确引入JS库的方法介绍
Jul 30 Javascript
基于Vue实现拖拽效果
Apr 27 Javascript
如何手动实现es5中的bind方法详解
Dec 07 Javascript
微信小程序左滑删除实现代码实例
Sep 16 Javascript
js实现上传图片并显示图片名称
Dec 18 Javascript
详解JavaScript 异步编程
Jul 13 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结合ajax实现赞、顶、踩功能实例
2014/05/12 PHP
Laravel5.1自定义500错误页面示例
2016/10/09 PHP
php实现socket推送技术的示例
2017/12/20 PHP
2020最新版 PhpStudy V8.1版本下载安装使用详解
2020/10/30 PHP
javascript轻量级模板引擎juicer使用指南
2014/06/22 Javascript
自己动手写的javascript前端等待控件
2015/10/30 Javascript
JavaScript实现点击按钮就复制当前网址
2015/12/14 Javascript
浅谈json取值(对象和数组)
2016/06/24 Javascript
angular2中router路由跳转navigate的使用与刷新页面问题详解
2017/05/07 Javascript
nodejs制作爬虫实现批量下载图片
2017/05/19 NodeJs
纯JS实现只能输入数字的简单代码
2017/06/21 Javascript
Javascript刷新页面的实例
2017/09/23 Javascript
NestJs 静态目录配置详解
2019/03/12 Javascript
js实现简单掷骰子小游戏
2019/10/24 Javascript
vue样式穿透 ::v-deep的具体使用
2020/06/04 Javascript
如何在postman中添加cookie信息步骤解析
2020/06/30 Javascript
详解微信小程序入门从这里出发(登录注册、开发工具、文件及结构介绍)
2020/07/21 Javascript
原生js实现贪吃蛇游戏
2020/10/26 Javascript
JavaScript实现点击图片换背景
2020/11/20 Javascript
windows系统中python使用rar命令压缩多个文件夹示例
2014/05/06 Python
Python中的引用和拷贝浅析
2014/11/22 Python
在Python程序员面试中被问的最多的10道题
2017/12/05 Python
对Python中内置异常层次结构详解
2018/10/18 Python
如何实现在jupyter notebook中播放视频(不停地展示图片)
2020/04/23 Python
Python API 操作Hadoop hdfs详解
2020/06/06 Python
WoolOvers澳洲官方网站:英国针织服装公司
2018/05/13 全球购物
干部行政关系介绍信
2014/01/17 职场文书
《童年的发现》教学反思
2014/02/14 职场文书
团队精神的演讲稿
2014/05/14 职场文书
英语系毕业生求职信
2014/07/13 职场文书
法学专业毕业实习自我鉴定2014
2014/09/27 职场文书
政府班子四风问题整改措施
2014/10/04 职场文书
优秀团员事迹材料
2014/12/25 职场文书
保护地球的宣传语
2015/07/13 职场文书
2017年大学生寒假社会实践活动总结
2016/04/06 职场文书
MySQL 表锁定 LOCK和UNLOCK TABLES的 SQL语法
2022/04/18 MySQL