2012-10-02 87 views
1

正確的,我試圖找出一種方法,我可以檢查對象中的某個特定數據段的元素,然後在必要時將其過濾掉。從存儲在一個對象中的元素獲取數據

我有一個簡單的列表,我正在運行所有列表項並將它們放入一個對象中。稍後,我想要遍歷並檢查每個元素的數據ID。

<ul id="test"> 
    <li data-id="1">a</li> 
    <li>b</li> 
    <li>c</li> 
    <li>d</li> 
    <li>e</li> 
    <li>f</li> 
    <li>g</li> 
    <li>h</li> 
    <li data-id="2">i</li> 
    <li>j</li> 
    <li>k</li> 
    <li>l</li> 
    <li>m</li> 
    <li>n</li> 
</ul>` 


var holder = {}; 
i = 0; 
$('#test li').each(function(){ 
    holder[i]=$(this); 
    i++ 
}); 
$('#test').append(holder[2]); 
holder.each(function(){ 
    console.log($(this).attr('data-id')); 

}); 

我敢肯定你們其中一位聰明的人能夠告訴我如何在短時間內做到這一點。這可能是非常明顯的!

爲幫助夥計們歡呼。

+1

問題是什麼? – xdazz

回答

4

沒有必要通過使用jQuery選擇器選擇元素來創建額外的對象。

var $holder = $('#test li'); 

$holder.each(function(){ 
    console.log($(this).data('id')); 
    // console.log(this.dataset.id); 
}) 

,如果你想選擇具有數據-ID屬性,你可以使用屬性選擇li元素:

var $holder = $('#test li[data-id]'); 

和存儲的值,可以使用map方法:

var data = $('#test li[data-id]').map(function(){ 
       return this.dataset.id; 
      }).get() // [1, 2] 
+0

好了,歡呼起來。會放棄一下。 – Joni

0

你有一個簡單的數組,其中包含的項目列表,而不是jQuery對象:

holder.each(function(){ 
    console.log($(this).attr('data-id')); 

}); 

,如果你通過這樣的陣列的項目要循環,你應該使用:

$.each(holder, function(){ 
    console.log($(this).attr('data-id')); 

});​ 

但是從你的代碼中不需要這個。你可以做類似如下:

$('#test li').each(function(){ 
    console.log($(this).attr('data-id')); 
}); 
$('#test').append($('#test li').eq(2)); 
+0

歡呼你的幫助。不勝感激。 – Joni

相關問題