这是问题所在: 我有一个函数,用链接填充列表,但$ .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>\
');
});
}
答案 0 :(得分:0)
我刚刚浏览了你的代码并发现实际上它的循环两次,它只用两个项填充容器,但由于<h3>
内有<li>
标记,它会创建一个新行,它似乎是循环2 * 2 = 4次。
以下是 jsFiddle 的修改后的代码。
答案 1 :(得分:0)
发现我的问题,实际上填充函数是在$ document.ready函数内部调用的,一旦DOM准备好就被调用,另一次在填充函数完成其工作之后调用(DOM操作调用文档就绪函数)这就是为什么我有两倍的人口。谢谢你的帮助。
所以我使用了这种技术:
var pageInitialized = false;
$(function(){
if(pageInitialized) return;
pageInitialized = true;
//do things
}