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 获取表单text,areatext,radio,checkbox,select值的代码
Nov 12 Javascript
jQuery 1.4 15个你应该知道的新特性(译)
Jan 24 Javascript
jquery实现的随机多彩tag标签随机颜色和字号大小效果
Mar 27 Javascript
jQuery表单域选择器用法分析
Feb 10 Javascript
第一次接触Bootstrap框架
Oct 24 Javascript
AngularJS模板加载用法详解
Nov 04 Javascript
jQuery md5加密插件jQuery.md5.js用法示例
Aug 24 jQuery
highCharts提示框中显示当前时间的方法
Jan 18 Javascript
Angular4.0动画操作实例详解
May 10 Javascript
vue项目中极验验证的使用代码示例
Dec 03 Javascript
OpenLayer3自定义测量控件MeasureTool
Sep 28 Javascript
JS中forEach()、map()、every()、some()和filter()的用法
May 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
收音机玩机评测 406 篇视频合集
2020/03/11 无线电
Mysql的GROUP_CONCAT()函数使用方法
2008/03/28 PHP
php 调用远程url的六种方法小结
2009/11/02 PHP
php 获取客户端的真实ip
2009/11/30 PHP
PHP访问MYSQL数据库封装类(附函数说明)
2010/12/04 PHP
PHP实现的英文名字全拼随机排号脚本
2014/07/04 PHP
windows的文件系统机制引发的PHP路径爆破问题分析
2014/07/28 PHP
Yii2单元测试用法示例
2016/11/12 PHP
php中通过eval实现字符串格式的计算公式
2017/03/18 PHP
PHP 中TP5 Request 请求对象的实例详解
2017/07/31 PHP
比较搞笑的js陷阱题
2010/02/07 Javascript
3种不同方式的焦点图轮播特效分享
2013/10/30 Javascript
jQuery的animate函数学习记录
2014/08/08 Javascript
jQuery实现带滚动线条导航效果的方法
2015/01/30 Javascript
node.js中格式化数字增加千位符的几种方法
2015/07/03 Javascript
JS实现横向与竖向两个选项卡Tab联动的方法
2015/09/27 Javascript
详解javascript中的babel到底是什么
2018/06/21 Javascript
Bootstrap 模态框自定义点击和关闭事件详解
2018/08/10 Javascript
Vue 实时监听窗口变化 windowresize的两种方法
2018/11/06 Javascript
基于JS实现一个随机生成验证码功能
2019/05/29 Javascript
element的el-table中记录滚动条位置的示例代码
2019/11/06 Javascript
浅谈Node新版本13.2.0正式支持ES Modules特性
2019/11/25 Javascript
简单介绍Ruby中的CGI编程
2015/04/10 Python
python计算方程式根的方法
2015/05/07 Python
python使用wmi模块获取windows下硬盘信息的方法
2015/05/15 Python
python3中的md5加密实例
2018/05/29 Python
Django Rest framework权限的详细用法
2019/07/25 Python
html5 初试 indexedDB(推荐)
2016/07/21 HTML / CSS
lululemon美国官网:瑜伽服+跑步装备
2018/11/16 全球购物
在使用非全零作为空指针内部表达的机器上, NULL是如何定义
2014/11/09 面试题
优秀毕业生自我鉴定
2014/01/19 职场文书
表扬稿格式范文
2015/01/16 职场文书
个人年终总结范文
2015/03/09 职场文书
捐书仪式主持词
2015/07/04 职场文书
小学体育教学随笔
2015/08/14 职场文书
阿里云ECS云服务器快照的概念以及如何使用
2022/04/21 Servers