jquery .each生成两个循环

时间:2012-11-22 15:23:46

标签: javascript jquery

这是问题所在:  我有一个函数,用链接填充列表,但$ .each函数通过linkList对象生成两个循环并填充容器两次(2 * 2 = 4项而不是2)可以解释为什么?

这是链接列表:

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>\
            ');
        });



}

2 个答案:

答案 0 :(得分:0)

我刚刚浏览了你的代码并发现实际上它的循环两次,它只用两个项填充容器,但由于<h3>内有<li>标记,它会创建一个新行,它似乎是循环2 * 2 = 4次。

以下是 jsFiddle 的修改后的代码。

答案 1 :(得分:0)

发现我的问题,实际上填充函数是在$ document.ready函数内部调用的,一旦DOM准备好就被调用,另一次在填充函数完成其工作之后调用(D​​OM操作调用文档就绪函数)这就是为什么我有两倍的人口。谢谢你的帮助。

所以我使用了这种技术:

var pageInitialized = false;

$(function(){
    if(pageInitialized) return;
    pageInitialized = true;
    //do things
}