Javascript 每个都有两个循环
问题是: 我有一个用链接填充列表的函数,但是$。每个函数通过linkList对象生成两个循环,并填充容器两次(2*2=4项而不是2项)。有人能解释一下原因吗 以下是链接列表: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
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个项目放入容器中