2013-02-15 54 views
0

我正在为ASP.NET MVC创建一个脚注助手。 我有我的网页上产生了一系列的类似链接:jQuery从文档中获取“独特”元素

<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

存储笔记,当您去 - 如果已经存在,在迭代步骤继续通过return ING:

<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> 
+0

完美!谢谢 – 2013-02-15 10:36:01