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 相关文章推荐
JSON序列化与解析原生JS方法且IE6和chrome测试通过
Sep 05 Javascript
JS实现静止元素自动移动示例
Apr 14 Javascript
为JS扩展Array.prototype.indexOf引发的问题及解决办法
Jan 21 Javascript
Node.js的项目构建工具Grunt的安装与配置教程
May 12 Javascript
jQuery时间日期三级联动(推荐)
Nov 27 Javascript
详解微信开发中snsapi_base和snsapi_userinfo及静默授权的实现
Mar 11 Javascript
Spring shiro + bootstrap + jquery.validate 实现登录、注册功能
Jun 02 jQuery
谈谈JS中的!!
Dec 07 Javascript
JavaScript多线程运行库Nexus.js详解
Dec 22 Javascript
Vue引入sass并配置全局变量的方法
Jun 27 Javascript
JS html事件冒泡和事件捕获操作示例
May 01 Javascript
JS三级联动代码格式实例详解
Dec 30 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加密解密的代码
2007/07/16 PHP
国外十大最流行的PHP框架排名
2013/07/04 PHP
thinkPHP实现瀑布流的方法
2014/11/29 PHP
使用ltrace工具跟踪PHP库函数调用的方法
2016/04/25 PHP
Laravel 在views中加载公共页面的实现代码
2019/10/22 PHP
Javascript实现的分页函数
2007/02/07 Javascript
离开页面时检测表单元素是否被修改,提示保存的js代码
2010/08/25 Javascript
利用window.name实现windowStorage代码分享
2014/01/02 Javascript
js使用ajax读博客rss示例
2014/05/06 Javascript
javascript制作游戏开发碰撞检测的封装代码
2015/03/31 Javascript
javascript清空table表格的方法
2015/05/14 Javascript
jquery插件ajaxupload实现文件上传操作
2015/12/09 Javascript
javascript实现右侧弹出“分享到”窗口效果
2016/02/01 Javascript
js获取鼠标点击的对象,点击另一个按钮删除该对象的实现代码
2016/05/13 Javascript
JQuery的常用选择器、过滤器、方法全面介绍
2016/05/25 Javascript
深入理解node exports和module.exports区别
2016/06/01 Javascript
jQGrid Table操作列中点击【操作】按钮弹出按钮层的实现代码
2016/12/05 Javascript
thinkphp标签实现bootsrtap轮播carousel实例代码
2017/02/19 Javascript
详解angularJs中关于ng-class的三种使用方式说明
2017/06/02 Javascript
AngularJS实现自定义指令与控制器数据交互的方法示例
2017/06/19 Javascript
Vue异步加载about组件
2017/10/31 Javascript
Vue2仿淘宝实现省市区三级联动
2020/04/15 Javascript
vue 弹窗时 监听手机返回键关闭弹窗功能(页面不跳转)
2019/05/10 Javascript
浅谈Vue.set实际上是什么
2019/10/17 Javascript
vue实现给div绑定keyup的enter事件
2020/07/31 Javascript
vue 修改 data 数据问题并实时显示操作
2020/09/07 Javascript
区分vue-router的hash和history模式
2020/10/03 Javascript
[50:54]完美世界DOTA2联赛 GXR vs IO 第三场 11.07
2020/11/10 DOTA
[01:03:18]DOTA2-DPC中国联赛 正赛 RNG vs Dynasty BO3 第一场 1月29日
2021/03/11 DOTA
Python多进程库multiprocessing中进程池Pool类的使用详解
2017/11/24 Python
Win7下Python与Tensorflow-CPU版开发环境的安装与配置过程
2018/01/04 Python
Python实现学生成绩管理系统
2020/04/05 Python
使用python绘制二元函数图像的实例
2019/02/12 Python
python获取txt文件词向量过程详解
2019/07/05 Python
Html5百叶窗效果的示例代码
2017/12/11 HTML / CSS
2015年全国“爱牙日”宣传活动总结
2015/03/23 职场文书