滚动到以JQuery字符开头的第一个元素
我有一个相当长的名字列表,我想建立一个快速简单的导航,滚动到以某个字符开头的名字 所以,如果我有这样的链接-滚动到以JQuery字符开头的第一个元素,jquery,jquery-selectors,Jquery,Jquery Selectors,我有一个相当长的名字列表,我想建立一个快速简单的导航,滚动到以某个字符开头的名字 所以,如果我有这样的链接- <a href="a">A</a> <a href="b">B</a> <a href="c">C</a> 一旦我有了这个字母,有没有办法找到第一个元素,它是以JQuery字母开头的h1.name 我认为最好的办法是使用a并对照字母的值检查h1元素中的文本(文本是否以给定文本开头) 未使用,因为它将在任何位置搜索给
<a href="a">A</a>
<a href="b">B</a>
<a href="c">C</a>
一旦我有了这个字母,有没有办法找到第一个元素,它是以JQuery字母开头的
h1.name
我认为最好的办法是使用a并对照字母的值检查h1
元素中的文本(文本是否以给定文本开头)
未使用,因为它将在任何位置搜索给定的文本,而不仅仅是开始位置。您可以初始化包含每个字母元素的缓存:
var letters = {};
$('h1.name').each(function() {
// find first letter of element contents
var letter = (this.textContent || this.innerText || '').toLowerCase()[0];
if (letter && !(letter in letters)) {
letters[letter] = this; // add to cache
}
});
然后在单击处理程序中使用它将相应的元素滚动到视图中:
$('a').on('click', function(e) {
e.preventDefault();
// use last letter of anchor
var letter = this.getAttribute('href').toLowerCase();
if (letter in letters) {
letters[letter].scrollIntoView();
}
});
它似乎对我不起作用,因为target
返回未定义的值--请告知。thanks@RCNeil请看-字母是小写的,但文本是大写的啊,太好了。它只是toLowerCase()
。你能更新你的答案吗?我会打分接受的?谢谢@我做了一些调整;看,谢谢你帮我解决这个问题。非常感谢,很高兴看到有多种方法。
var letters = {};
$('h1.name').each(function() {
// find first letter of element contents
var letter = (this.textContent || this.innerText || '').toLowerCase()[0];
if (letter && !(letter in letters)) {
letters[letter] = this; // add to cache
}
});
$('a').on('click', function(e) {
e.preventDefault();
// use last letter of anchor
var letter = this.getAttribute('href').toLowerCase();
if (letter in letters) {
letters[letter].scrollIntoView();
}
});