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 相关文章推荐
静态页面的值传递(三部曲)
Sep 25 Javascript
javascript中的关于类型转换的性能优化
Dec 14 Javascript
jQuery移动和复制dom节点实用DOM操作案例
Dec 17 Javascript
100个不能错过的实用JS自定义函数
Mar 05 Javascript
Jquery实现仿腾讯微博发表广播
Nov 17 Javascript
XML文件转化成NSData对象的方法
Aug 12 Javascript
jQuery焦点图轮播插件KinSlideshow用法分析
Jun 08 Javascript
JQuery EasyUI学习教程之datagrid 添加、修改、删除操作
Jul 09 Javascript
JavaScript实现垂直向上无缝滚动特效代码
Nov 23 Javascript
Angular JS 生成动态二维码的方法
Feb 23 Javascript
bootstrap里bootstrap动态加载下拉框的实例讲解
Aug 10 Javascript
ES6函数实现排它两种写法解析
May 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
使用 php4 加速 web 传输
2006/10/09 PHP
PHP利用APC模块实现文件上传进度条的方法
2015/01/26 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
2017/07/19 PHP
图片按比例缩放函数
2006/06/26 Javascript
键盘控制事件应用教程大全
2006/11/24 Javascript
js每隔5分钟执行一次ajax请求的实现方法
2013/11/27 Javascript
js中AppendChild与insertBefore的用法详细解析
2013/12/16 Javascript
Js和JQuery获取鼠标指针坐标的实现代码分享
2015/05/25 Javascript
jQuery获取页面及个元素高度、宽度的总结——超实用
2015/07/28 Javascript
WordPress 单页面上一页下一页的实现方法【附代码】
2016/03/10 Javascript
nodejs加密Crypto的实例代码
2016/07/07 NodeJs
jQuery中常用动画效果函数(日常整理)
2016/09/17 Javascript
bootstrap PrintThis打印插件使用详解
2017/02/20 Javascript
js仿微信公众平台打标签功能
2017/04/08 Javascript
jQuery判断邮箱格式对错实例代码讲解
2017/04/12 jQuery
vue-router路由参数刷新消失的问题解决方法
2017/06/17 Javascript
JS中type=&quot;button&quot;和type=&quot;submit&quot;的区别
2017/07/04 Javascript
BootStrap的双日历时间控件使用
2017/07/25 Javascript
实现单层json按照key字母顺序排序的示例
2017/12/06 Javascript
微信小程序自定义轮播图
2018/11/04 Javascript
vue路由对不同界面进行传参及跳转的总结
2019/04/20 Javascript
JS document对象简单用法完整示例
2020/01/14 Javascript
pycharm远程调试openstack的图文教程
2017/11/21 Python
Python3 使用selenium插件爬取苏宁商家联系电话
2019/12/23 Python
WebSphere 应用服务器都支持哪些认证
2013/12/26 面试题
网络公司美工设计工作个人的自我评价
2013/11/03 职场文书
转预备党员政审材料
2014/02/06 职场文书
小学三好学生事迹材料
2014/08/15 职场文书
标准离婚协议书范文下载
2014/11/30 职场文书
高中教师个人工作总结
2015/02/10 职场文书
2015年“世界无车日”活动方案
2015/05/06 职场文书
军训决心书范文
2015/09/22 职场文书
2016暑期政治学习心得体会
2016/01/23 职场文书
护士爱岗敬业心得体会
2016/01/25 职场文书
劳务派遣管理制度(样本)
2019/08/23 职场文书
python 实现两个变量值进行交换的n种操作
2021/06/02 Python