我发现了这篇文章:
jQuery get img source attributes from list and push into array
其中介绍了map()功能。
说我通过以下方式获取多张图片的图片src
:
var $img_sources_array = $(".my_class img").map(function() {
return $(this).attr("src");
});
当我在Firebug控制台中使用typeof $img_sources_array
时,我得到“未定义”。
但如果我这样做:
$.each($img_sources_array, function (obj,v) {
alert(v);
});
然后显示每个图像源。
问题
那么$img_sources_array
的类型是什么,它看起来是什么样的,以及如何从控制台访问其值?
上下文
我正在尝试理解返回的结构,以便我可以构建多维数组,我可以添加和访问src
和class
,如下所示:
var my_object_array = [];
var $img_properties_array_2 = $(".image_container img").map(function() {
var img_src = $(this).attr("src");
var img_class = $(this).attr("class");
var my_object = {};
my_object.img_src = img_src;
my_object.img_class = img_class;
my_object_array.push(my_object);
});
console.log(my_object_array[0].img_class); // this works, type fixed in array name
的jsfiddle
http://jsfiddle.net/rwone/tD9eh/7/
编辑:关于问题的第二部分,以下内容将返回我之后的内容:
// container for multidimensional arrays
var my_object_array = [];
var $img_properties_array_2 = $(".image_container img").map(function() {
var img_src = $(this).attr("src");
var img_class = $(this).attr("class");
var my_object = {};
my_object.img_src = img_src;
my_object.img_class = img_class;
my_object_array.push(my_object);
});
$.each(my_object_array, function (obj,v) {
console.log('image source: ' + v.img_src);
console.log('image class: ' + v.img_class);
});
答案 0 :(得分:1)
.map()
只对返回的值/对象进行分组,此外,您必须使用.get()
将其转换为数组。
尝试,
var my_object_array = $(".image_container img").map(function() {
var img_src = $(this).attr("src");
var img_class = $(this).attr("class");
var my_object = {};
my_object.img_src = img_src;
my_object.img_class = img_class;
return my_object;
}).get();