我遇到了一些我认为是一个简单问题的问题。
我想为一系列博客文章自动创建锚链接 - 我一直在尝试使用 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 的示例,我设法在这个过程中学到了一些东西并从中获取了一些解决方案 - 为了帮助他人,这是我最终完成的解决方案,用于我的具体应用:
注意实际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);
});
工作得很漂亮,所以,谢谢你抽出时间帮助我。
答案 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>';
也可以这样做:
var newsLinks = '<div id="news-links">';
$.each($(".journal-entry"), function() {
newsLinks += '<a href="#'+this.id+'">Post '+this.id.replace('item', '')+'</a><br/>';
});
newsLinks += '</div>';
答案 1 :(得分:0)
$(".journal-entry").each(function(index, value) {
$('#news-links').append('<a href="#'+this.id+'">Post '+ this.id.replace('item', '')+'</a>');
});