JQuery根据字母检索元素并导航到指定位置
介绍:类似于实现ios通讯录中右侧字母,快速导航到联系人的效果,如图:

Html代码如下,分别是字母和港星名字的排序:
<input type="text" id="searchBox" />
<ul id="letter">
<li>C</li>
<li>L</li>
<li>D</li>
<li>E</li>
<li>F</li>
<li>G</li>
<li>H</li>
<li>X</li>
<li>Z</li>
</ul><br />
<ul id="dataSet">
<li>刘德华</li>
<li>黄日华</li>
<li>张学友</li>
<li>谢霆锋</li>
<li>陈奕迅</li>
<li>陈冠希</li>
<li>郑伊健</li>
<li>郭富城</li>
<li>黄秋生</li>
<li>杜琪峰</li>
<li>梁朝伟</li>
</ul> </div>
CSS代码如下:
<style>
#dataSet li { height:100px
}
#letter{
width:4rem;font-size:1rem; color: #; position:fixed; top:.7rem; right:; z-index:; background-color:#fff; text-align:center; text-transform:uppercase;
}
#letter li{
height:2rem; line-height:2rem;
}
</style>
JS代码:给港星名称默认排序,并给各li,添加pinyin属性,代码如下:
//初始化排序
function getPinYin() {
var set = $("#dataSet li");
$.each(set, function (index,value) {
$(this).attr("pinyin", $(this).toPinyin());
});
//for (var i = 0; i < set.length; i++) {
// set.eq(i).attr("pinyin", set.eq(i).toPinyin())
//}
var arr = [];
for(var i=;i<set.length;i++)
{
arr.push(set[i]);
}
arr.sort(function (a, b) {
var first = $(a).attr("pinyin");
var second = $(b).attr("pinyin");
//return $(a).attr("pinyin") - $(b).attr("pinyin");
if (first < second) return -;
if (first > second) return ;
return ;
});
for(var i=;i<arr.length;i++)
{
$("#dataSet").append(arr[i]);
}
}
</script>
其中$.toPinyin()来自jQuery.Hz2Py-min.js,可以从互联网上下载得到。该方法是获取中文的拼音,效果如图:

JS代码:点击右侧的导航字母,将窗口导航到指定的位置,代码如下:
function letterClick()
{
$("#letter li").click(function () {
var list = $("#dataSet li");
var oLetter = $("#letter li");
var $this = $(this);
var oI = oLetter.index($this);
var oText = oLetter.eq(oI).text();
var first = true; var offset = ;
for(var i=;i<list.length;i++)
{
if(list.eq(i).attr("pinyin").charAt().toUpperCase()==oText)
{
offset = list.eq(i).offset().top;
break;
}
}
$("html,body").animate({ scrollTop: offset }, );
})
}
注意,将窗口滚动到指定位置用的是animate方法。
当点击G时,窗口顶部导航到郭富城,总体效果如图:

号外:莫不是网站中“回到顶部”的按钮也是相同的实现方式。
JQuery根据字母检索元素并导航到指定位置的更多相关文章
- jquery使用replaceWith替换元素,但是替换的位置不对应的问题
$("#itemList").replaceWith(htmlContent); 注: $("#itemList")处应为tr元素,如果是span元素或者div ...
- JQuery插件:ScrollTo平滑滚动到页面指定位置
1.准备jQuery库和scrollTo.js插件. <script type="text/javascript" src="js/jquery.js"& ...
- Java_集合操作_将元素插入List的指定位置
package test; import java.util.ArrayList; import java.util.List; public class test { public static v ...
- jQuery实现将div中滚动条滚动到指定位置的方法
1.JS代码: onload = function () { //初始化 scrollToLocation(); }; function scrollToLocation() { var mainCo ...
- javascript数组在指定位置添加和删除元素
在JavaScript中,Array对象提供了一个强大的splice()方法,利用这个方法可以达到在数组的指定位置添加和删除元素的目的. 指定位置删除元素 要在指定位置删除元素,可以使用splice( ...
- jQuery学习笔记---兄弟元素、子元素和父元素的获取
我们这里主要总结jQuery中对某元素的兄弟元素.子元素和父元素的获取,原声的Javascript代码对这些元素的获取比较麻烦一些,而jQuery正好对这些方法进行封装,让我们更加方便的对这些元素进行 ...
- jQuery防京东浮动网站楼层导航代码
jQuery防京东浮动网站楼层导航代码 <!DOCTYPE html > <html xmlns="http://www.w3.org/1999/xhtml" ...
- 解析Jquery取得iframe中元素的几种方法
iframe在复合文档中经常用到,利用jquery操作iframe可以大幅提高效率,这里收集一些基本操作,需要的朋友可以参考下 DOM方法:父窗口操作IFRAME:window.frames[&q ...
- jQuery初探 jQuery选取和操纵元素的特点
jQuery初探 jQuery选取和操纵元素的特点 JavaScript选取元素 先来看看不用jQuery的时候我们是怎么处理元素选取的. JavaScript选取元素的时候,可以根据id获取元素,当 ...
随机推荐
- hadoop集群启动时DataNode节点启动失败
错误日志如下: ************************************************************/ 2018-03-07 18:57:35,121 INFO o ...
- linux打包文件,压缩文件
1.打包: linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的.生成tar包后,就可以用其它的程序来进行压缩. 1.命令格 ...
- [拾零]C语言的数组指针
为了强化记忆,从而写笔记保留. 数组指针,顾名思义,是在说一个指针,这个指针是指向数组的. 区别于指针数组 int* p[5] = NULL; //指针数组 基类型 int* int (*p)[5] ...
- dos 删除文件夹 rd
windows普通方法删除不了文件.文件夹?那么试试dos命令吧. rd的另外一个写法是rmdir,源自ReMakeDirectory.使用的方法也很简单:rd 文件夹名 即可,例如:rd test. ...
- JavaScript中函数对象和对象的区别
function Test (word) { console.log (word); } Test('哈哈,我是函数'); new Test('哈哈,我是对象'); //将以上的调用方式换种通俗易懂的 ...
- 设置DIV随滚动条滚动而滚动
有段时间没有碰Web端了,最近做了个功能,需要做个DIV随滚动条滚动而滚动,mark一下: 源码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1 ...
- MySQL表的碎片整理和空间回收小结
MySQL表碎片化(Table Fragmentation)的原因 关于MySQL中表碎片化(Table Fragmentation)产生的原因,简单总结一下,MySQL Engine不同,碎片化的原 ...
- Outlook 0x800CCC1A 错误
使用POP3帐户时,您可能在Outlook 2013/2016中看到以下错误.我在Exchange Server 2013环境中遇到此问题,在Windows 8.1上运行的Microsoft Outl ...
- Microsoft Exchange本地和Exchange Online可以与第三方服务共享
很多人都知道Office 365中的Microsoft Exchange本地和Exchange Online可以与第三方服务共享您的个人数据?例如,在Exchange电子邮件中找到的任何地图地址都会发 ...
- Python3+Selenium3+webdriver学习笔记14(等待判断 鼠标事件 )
!/usr/bin/env python -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记14(等待判断 鼠标事件 )'''from selenium im ...