-1

問題は次のとおりです。リストにリンクを設定する関数がありますが、$。each関数はlinkListオブジェクトを2回ループし、コンテナに2回入力します(2ではなく2 * 2 = 4項目)。誰かが理由を説明できますか?

リンクリストは次のとおりです。

var linkList = {
    link1:["Title","Source","http://google.com","file.pdf"],
    link2:["Title2","Source2","http://google.com","file.pdf"]
};

そしてここに機能があります:

function injectLinks(){

    $.each(linkList, function(i,item) {

        var title = item[0];
        var source = item[2];
        var extern = item[3];


        $('#linkListView').append('\
                <li>\
                    <a rel="external" href="'+extern+'">\
                            <h3>'+title+'</h3><p>'+source+'</p>\
                    </a>\
                </li>\
            ');
        });



}
4

2 に答える 2

0

私の問題を見つけました。実際、ポピュレーション関数は$ document.ready関数内で呼び出されました。この関数は、DOMの準備ができた後と、ポピュレーション関数の作業が終了した後(DOM操作でドキュメントレディ関数が呼び出されます)に呼び出されたため、2倍のポピュレーションが発生しました。 。ご協力いただきありがとうございます。

だから私はこのテクニックを使いました:

var pageInitialized = false;

$(function(){
    if(pageInitialized) return;
    pageInitialized = true;
    //do things
}
于 2012-11-23T22:05:46.533 に答える
0

コードを調べたところ、実際には2回ループしていて、コンテナに2つのアイテムしか入力されていないことがわかりましたが、<h3>中にタグがあるため<li>、新しい行が作成され、2 * 2=4回ループしているように見えます。

これがjsFiddleで変更されたコードです。

于 2012-11-22T19:41:42.723 に答える