jQuery从文档中获取“distinct”元素

时间:2013-02-15 10:13:38

标签: jquery asp.net-mvc-4

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

的链接

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

我想生成包含实际音符的底部。目标是从每个链接中获取hrefdata-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而言,我的元素已经是独一无二的了。

1 个答案:

答案 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>