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获取元素,当 ...
随机推荐
- Fleet(集群管理器)
工作原理 fleet 是通过systemd来控制你的集群的,控制的任务被称之为unit(单元),控制的命令是fleetctl unit运行方式 unit的运行方式有两种: standard globa ...
- spring Cloud中,解决Feign/Ribbon整合Hystrix第一次请求失败的问题?
Spring Cloud中,Feign和Ribbon在整合了Hystrix后,可能会出现首次调用失败的问题,要如何解决该问题呢? 造成该问题的原因 Hystrix默认的超时时间是1秒,如果超过这个时间 ...
- SharePoint 2013 安装配置(3-1)
在第二部分中,我向您展示了如何在Windows Server 2012 R2 for SharePoint 2013上设置Active Directory域服务.现在我们应该能够在Active Dir ...
- C#中静态成员和实例变量
昨天晚上看静态成员和实例变量的时候,看到这样的一句话:默认情况下,若成员被定义为实例变量,这就意味着类需要为每个实例都建立一个副本,而在定义一个静态变量的时候,只存在此成员的一个副本. 呵呵,今天跟前 ...
- 有一个无效 SelectedValue,因为它不在项目列表中
“Drp_XX”有一个无效 SelectedValue,因为它不在项目列表中 出现以上异常的原因肯定是将DrowDownList控件的SelectedValue属性赋值为一个列表中不存在的值.那么我们 ...
- BZOJ 4881: [Lydsy2017年5月月赛]线段游戏
4881: [Lydsy2017年5月月赛]线段游戏 Time Limit: 3 Sec Memory Limit: 256 MBSubmit: 164 Solved: 81[Submit][St ...
- uoj#300.【CTSC2017】吉夫特
题面:http://uoj.ac/problem/300 一道大水题,然而我并不知道$lucas$定理的推论.. $\binom{n}{m}$为奇数的充要条件是$n&m=n$.那么我们对于每个 ...
- 如何使用TensorFlow Hub和代码示例
任何深度学习框架,为了获得成功,必须提供一系列最先进的模型,以及在流行和广泛接受的数据集上训练的权重,即与训练模型. TensorFlow现在已经提出了一个更好的框架,称为TensorFlow Hub ...
- 2018.5.13 oracle遇到的问题
安装Oracle 11g 出现交换空间不够 在计算机那里右键打开属性进入高级系统设置然后找到第一个设置找到高级然后更改一下自定义范围(云服务器是16-10000) 然后确定 完成了. 快安装结束之后显 ...
- 在ubuntu中用命令安装iperf
Iperf的安装要换成阿里的源 sudo add-apt-repository "ppa:patrickdk/general-lucid" sudo apt-get update ...