Javascript 每个都有两个循环

Javascript 每个都有两个循环,javascript,jquery,Javascript,Jquery,问题是: 我有一个用链接填充列表的函数,但是$。每个函数通过linkList对象生成两个循环,并填充容器两次(2*2=4项而不是2项)。有人能解释一下原因吗 以下是链接列表: var linkList = { link1:["Title","Source","http://google.com","file.pdf"], link2:["Title2","Source2","http://google.com","file.pdf"] }; 下面是函数: function in

问题是: 我有一个用链接填充列表的函数,但是$。每个函数通过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>\
            ');
        });



}
函数injectLinks(){
$。每个(链接列表、函数(i、项){
变量标题=项目[0];
var来源=项目[2];
外部变量=项目[3];
$('#linkListView')。追加('\
  • \ \
  • \ '); }); }
    我刚刚检查了您的代码,发现实际上它循环了两次,并且它只使用两个项目填充容器,但是由于您在
  • 中有一个
    标记,它创建了一个新行,看起来它循环了2*2=4次


    这是在

    发现我的问题时修改的代码,实际上填充函数是在$document.ready函数中调用的,该函数在DOM就绪后调用,另一次填充函数完成工作后调用(DOM操纵调用document ready函数),这就是我使用双重填充的原因。谢谢你的帮助

    所以我用了这个技巧:

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

    它不会这样做,所以问题一定是你调用了两次函数。你想只填充一条记录吗?它会生成两个循环,因为数组中有两个项目:)它会在第一个循环之后生成一个新的循环,这会将4个项目放入容器中