2010-03-01 70 views
21

我有这样的缩略图列表,并希望成像路径(源)推到一个数组:tn_arrayjQuery的获得IMG源从属性列表,并推入阵列

<ul id="thumbnails"> 
    <li><img src="somepath/tn/004.jpg" alt="fourth caption" /></a></li> 
    <li><img src="somepath/tn/005.jpg" alt="fifth caption" /></a></li> 
    <li><img src="somepath/tn/006.jpg" alt="sixth caption" /></a></li> 
</ul> 

回答

48

的SRC属性,更可以创建数组直接使用map()

var tn_array = $("#thumbnails img").map(function() { 
    return $(this).attr("src"); 
}); 

编辑:tn_array是这里的对象,而不是严格的Javascript数组,但它将作为一个数组。例如,这是合法的代码:

for (int i=0; i<tn_array.length; i++) { 
    alert(tn_array[i]); 
} 

但是,您可以拨打get(),这将使其成为一个严格的数组:

你如何分辨?呼叫:

alert(obj.constructor.toString()); 

第一个版本将是:

function Object() { [native code] } 

第二:

function Array() { [native code] } 
+0

甜蜜!非常感谢:) – FFish 2010-03-01 10:17:46

+0

是的,谢谢+1。我正在寻找一种类似的技术来获取val()的数组。这种令人惊讶的jquery没有内置的东西。看起来像一个狡辩,但它毕竟是“少写”库。 :) – harpo 2010-03-05 18:33:33

+0

还要记住,如果你想要一个实际的数组,你需要对.map()的结果调用.get()。 – harpo 2010-03-05 18:52:11

5

可以遍历以往img元素:

var tn_array = Array(); 

$('#thumbnails img').each(function() { 
    tn_array.push($(this).attr('src')); 
});