2012-01-03 69 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; 

    }); 

}