如何使用每篇博文中的id创建锚链接?

时间:2012-04-15 17:27:01

标签: jquery loops each

我遇到了一些我认为是一个简单问题的问题。

我想为一系列博客文章自动创建锚链接 - 我一直在尝试使用 each()命令循环显示父div中的子项但我只是不能使它正常工作,我现在很困惑,我不知道我在做什么。 ((@ _ @))

博客内容的结构如下:

<div id="content">
 <div class="list-journal-entry-wrapper">
  <div class="post-text">
    <div id="item101" class="journal-entry">...</div>
   </div><div class="post-text">
    <div id="item102" class="journal-entry">...</div>
   </div><div class="post-text">
    <div id="item103" class="journal-entry">...</div>
   </div>
  </div>
 </div>
</div>

我想要做的是为每个id="item101"帖子使用唯一的项目编号(.journal-entry)来创建锚链接列表,如下所示:

<div id="news-links">
  <a href="#item101">Post 101</a><br/>
  <a href="#item102">Post 102</a><br/>
  <a href="#item103">Post 103</a><br/>
</div>

我无法为每个帖子找到id="xxxxx"

一旦我拥有该ID,使用id值作为href

写出锚链接应该非常简单

<a href="#xxxxx">Post xxxxx</a>

我真的很感激一个例子,所以我可以绕过 each()命令。

或者有更好的方法吗?


解决了!感谢来自 adeneo theCodeParadox 的示例,我设法在这个过程中学到了一些东西并从中获取了一些解决方案 - 为了帮助他人,这是我最终完成的解决方案,用于我的具体应用:

http://jsfiddle.net/mDSWE/3/

注意实际HTML中还有其他div,最后的jQuery例程查找文章标题h2.title以用作链接文本,然后使用parents()函数,找到id的属性第一个包装器div id="item12345",用于锚链接href

$('h2.title a').each(function() {
   var el = $(this);
    var id = el.parents('div.journal-entry:first').attr('id');
   var insert = '<a href="#' + id + '">' + el.text() + '</a></br>';
   $('#news-anchors').append(insert);
});

工作得很漂亮,所以,谢谢你抽出时间帮助我。

2 个答案:

答案 0 :(得分:3)

var newsLinks = '<div id="news-links">';

$(".journal-entry").each(function(index, item) {
    newsLinks += '<a href="#'+item.id+'">Post '+item.id.replace('item', '')+'</a><br/>';
});

newsLinks += '</div>';

FIDDLE

也可以这样做:

var newsLinks = '<div id="news-links">';

$.each($(".journal-entry"), function() {
    newsLinks += '<a href="#'+this.id+'">Post '+this.id.replace('item', '')+'</a><br/>';
});

newsLinks += '</div>';

FIDDLE

答案 1 :(得分:0)

$(".journal-entry").each(function(index, value) {
  $('#news-links').append('<a href="#'+this.id+'">Post '+ this.id.replace('item', '')+'</a>');
});