0

ASP.NETMVCの脚注ヘルパーを作成しています。私は自分のページに次のようなリンクのセットを生成しました。

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

実際のメモを含む下部セクションを生成したいと思います。目標は、各リンクからhrefとを取得し、ページの下部に要素を作成することです。data-textli

これは、このセクション用に生成された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 に答える