2012-01-03 68 views
2

我想創建一個使用JS/jQuery的動態數組。 HTML結構是:Javascript/jQuery動態數組

<ul> 
    <li><img src="1"/></li> 
    <li><img src="2"/></li> 
    <li><img src="3"/></li> 
</ul> 

我試圖創建圖像源的一個新的數組,所以它最終看起來像:

var imagesArray = [1, 2, 3]; 

我想我可以使用jQuery的.each()方法..但我不斷迷路。如果你可以請提供一個解釋,我真的很感激它。

謝謝!

回答

2

您認爲正確的:)你可以使用jQuery的。每個()方法..如下..

<script type="text/javascript"> 
$(document).ready(function(){ 
    var imagesArray =new Array(); 
    $("ul li img").each(function(){ 
    imagesArray.push($(this).attr('src')); 
    }); 
    console.log(imagesArray); // this returns ["1", "2", "3"] 
}); 
</script> 
4
var imagesArray = $('img').map(function(){ return this.src; }).get(); 

這裏有一個演示:http://jsfiddle.net/pkeBZ/


jQuery's .map() method遍歷所有元素,收集無論是從回調函數返回,並創建一個新的陣列出來。

但是,返回的結果表現得像一個數組,但實際上是一個jQuery對象(已授予,它在您的用例中可能沒有區別)。

如果你想將一個jQuery對象轉換成一個數組,你可以使用jQuery's .get() method

+0

我的代碼並提醒結果。警報中沒有顯示任何內容。也許我做錯了什麼。另外,你能解釋.map和.get函數嗎?請! – 2012-01-03 03:26:06

+0

@mitch - 我用演示更新了我的答案,並作了進一步的解釋。 – 2012-01-03 03:33:22

1

使用此代碼片斷循環jQuery中

1陣列)首先,我們聲明現在我們循環中使用的foreach的arrray

var MapAreas = []; 

2)

$.each(MapAreas, function (index, value) { 

     alert(index + ':' + value); 
    } 

3)要檢查的值是在一個陣列已經存在使用此代碼段

if ($.inArray(value, MapAreas) >= 0) {} 

4)爲了從數組中刪除一個項時,我添加此使用此功能

RemoveItemFromArray(value, arr) { 

     return jQuery.grep(arr, function (elem, index) { 

     return elem !== value; 

    }); 

}