滚动到以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();
    }
});