2012-11-22 108 views
-1

這裏的問題: 我有一個函數,用鏈接填充列表,但$ .each函數通過linkList對象兩個循環,並填充容器兩次(2 * 2 = 4項目,而不是2)有人可以解釋爲什麼?jquery .each使兩個循環

這裏的鏈接列表:

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



} 
+13

它沒有這樣做,所以問題一定是你調用該函數的兩倍。 – Pointy

+0

你只想填充一條記錄嗎? – Adil

+0

該函數正常工作 –

回答

0

發現我的問題,實際上填充函數是在$ document.ready函數內調用的,一旦DOM準備就緒,並且在填充函數完成其工作(DOM操作調用文檔就緒函數)後又調用該函數,這就是爲什麼我有兩倍的人口。謝謝你的幫助。

所以我用這個技術:

var pageInitialized = false; 

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

我只是通過您的代碼去,發現實際上它的循環兩次,這兩個項目填充的容器但由於<li>中有一個<h3>標記,它會創建一個新行,並且它看起來像循環2 * 2 = 4次。

這是的修改代碼jsFiddle