0

我正在为 ASP.NET MVC 创建一个脚注助手。我在我的页面上生成了一组类似于以下内容的链接:

<a rel="footnote" href="#fn:footnote1" data-text="note" data-ref="1">1</a>

我想生成包含实际注释的底部。目标是从每个链接中获取hrefand并在页面底部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 而言,我的元素已经是独一无二的。

4

1 回答 1

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>
于 2013-02-15T10:29:23.473 回答