2014-03-29 56 views
1

在我的代碼裏,lis是動態生成的,每個li都有特殊的id。 我想每個li 「ID」 存儲一個陣列在數組中動態存儲li id

這是JS代碼

var i=0; 
$("ul#portfolio li").each(function(eval){ 
    var idd = new Array(); 
     idd[i]=$(this).attr("id"); 
    i++; 
}); 

,但它不到風度的工作。

HTML

<div id="container"> 
    <ul id="portfolio" class="clearfix"> 
    <!-- Dynamically generated li --> 
    </ul> 
</div> 
+0

你沒有任何LI元素? – adeneo

回答

2

你需要使用.map()

var idd = $("#portfolio li").map(function(eval){ 
    return this.id; 
}).get(); 

在你的情況你的陣列是本地的回調,所以每次的每次迭代回調正在創建新陣列,而不是將項目添加到現有陣列

var idd = new Array(); 
$("#portfolio li").each(function (eval) { 
    idd.push(this.id) 
}); 
  • 確保您的腳本運行後的目標元件裝入到DOM(可能是通過使用DOM就緒處理)
  • 使用this.id這是一樣的$(this).attr('id')
+0

consol.log返回給我的日誌顯示只有一個單元格變滿,並且是數組(1),我找不到爲什麼發生此問題 – mkafiyan

+0

@mimi您需要在'li'元素後面運行代碼添加到'ul' –

+0

我檢查了你說的但它有同樣的問題 – mkafiyan

1

你可以試試這個也

$(document).ready(function() 
    for(var i=0;i<5;i++){ 
     $('#portfolio').append("<li id='"+ i +"'>"+ i +"</li>"); 
    } 

    var idArray=new Array(); 
     $('#portfolio li').each(function(ind,val){ 
     idArray.push(this.id) 

     }); 

    console.log(idArray); 
});