3

使用javascript我正在循环遍历我的 H3 元素,如下所示:

$('h3').each(function(){ });

然后,我为该标签生成一个锚点,格式如下:“section-x”,其中 x 为页面上的每个 H3 递增。我遇到的问题是我希望标题的第一个字母成为锚链接,如下所示:

* H *标题

.. 其中 H 带有下划线,表示链接。我可以格式化锚点,但是我不知道如何在每个标题的第一个字母周围加上超链接标签。一些帮助将不胜感激。

问候, kvanberendonck

4

3 回答 3

5

像这样的东西?

$('h3').each(function(){ 
    var currentHeading = $(this).text();

    $(this).html("<a href='link'>" + currentHeading.substr(0,1) + "</a>" + currentHeading.substr(1, currentHeading.length - 1));
});
于 2012-04-05T03:16:27.477 回答
2

让我们加入一些普通的 javascript 代码:

$('h3').html(function(i){
    var self = $(this)
      , html = self.html()

    return html[0].anchor('section-'+i) + html.substring(1)
})
  • html(和大多数其他 setter 函数)接受一个函数作为参数并使用每个元素的返回值
  • "string".link(target)创建代码<a href="#target">string</a>。一个很好的复古有用的方法

编辑:从切换.link.anchor. 虽然不推荐使用锚点,但您应该开始为此使用 ID:

$('h3').html(function(i){
    var self = $(this)
      , text = self.text()

    // give the H3 an id and link to it
    // ideally the headers should already have an id
    this.id = 'section-'+i
    return text[0].link('#section-'+i) + text.substring(1)
})
于 2012-04-05T03:30:06.807 回答
1
$('h3').each(function(i){
   var firstLetter = $(this).text()[0];
   $(this).html('<a href="where.html">' + firstLetter + '</a>' + $(this).text().substr(1));
});

不知道你想把section-x那个标题放在哪里,但你可以i在里面使用each()来获取当前的迭代索引。

于 2012-04-05T03:24:51.800 回答