0

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

我想为一系列博客文章自动创建锚链接 - 我一直在尝试使用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()命令。

还是有更好的方法来做到这一点?


解决了!多亏了adeneotheCodeParadox的示例,我设法在此过程中学到了一些东西,并从两种解决方案中学到了一些东西——为了帮助他人,这是我最终完成的解决方案,用于我的特定应用程序:

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

请注意,实际 HTML 中还有其他 div,最终的 jQuery 例程查找文章标题h2.title以用作链接文本,然后使用该函数找到它用于锚链接parents()的第一个包装 div 的 id 属性。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);
});

工作得很好,所以感谢您抽出时间来帮助我。

4

2 回答 2

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>';

小提琴

也可以这样做:

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

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

newsLinks += '</div>';

小提琴

于 2012-04-15T17:35:41.090 回答
0
$(".journal-entry").each(function(index, value) {
  $('#news-links').append('<a href="#'+this.id+'">Post '+ this.id.replace('item', '')+'</a>');
});
于 2012-04-15T17:51:37.977 回答