我正在为ASP.NET MVC创建一个脚注助手。 我在我的页面上生成了一组类似于:
的链接 <a rel="footnote" href="#fn:footnote1" data-text="note" data-ref="1">1</a>
我想生成包含实际音符的底部。目标是从每个链接中获取href
和data-text
,并在页面底部创建一个li
元素。
这是为此部分生成的HTML:
<div id="6c708d57-abc0-4e53-ab0c-913f0b8c8020" class="footnote">
<hr />
<ol></ol>
</div>
以及相应的脚本:
<script type="text/javascript">
$(function () {
var footnotes = $('#6c708d57-abc0-4e53-ab0c-913f0b8c8020 ol');
$('a[rel="footnote"]').each(function () {
var reference = $(this).text();
var text = $(this).attr('data-text');
var href = $(this).attr('href').substring(1);
footnotes.append('<li id="' + href + '">' + text + '</li>');
});
});
</script>
问题是当我想在几个元素上重复使用相同的音符时,音符会在底部重复出现。我希望它只出现一次。
检索语义上不同的A
列表的最简单的解决方案是什么?
我看过jQuery.unique()
,但就DOM而言,我的元素已经是独一无二的了。
答案 0 :(得分:1)
随时将注释存储在哈希中 - 如果已存在,请在迭代步骤中按return
继续:
<script type="text/javascript">
$(function () {
var footnotes = $('#6c708d57-abc0-4e53-ab0c-913f0b8c8020 ol');
var notesProcessed = {};
$('a[rel="footnote"]').each(function () {
var reference = $(this).text();
var text = $(this).attr('data-text');
var href = $(this).attr('href').substring(1);
if(notesProcessed[href])
return;
footnotes.append('<li id="' + href + '">' + text + '</li>');
notesProcessed[href] = true;
});
});
</script>