將div內所有圖像的源屬性字符串放入數組中的最簡潔方法是什麼?將所有圖像的源代碼放入數組
我希望這會工作 -
var imageSourceArray = $("#leDiv img").attr('src');
alert(imageSourceArray[3]); //not alerting the source, boo hoo.
我需要遍歷$(「#leDiv IMG」),每個SRC字符串添加到單獨的陣列?還是有更好的方法來做到這一點?
將div內所有圖像的源屬性字符串放入數組中的最簡潔方法是什麼?將所有圖像的源代碼放入數組
我希望這會工作 -
var imageSourceArray = $("#leDiv img").attr('src');
alert(imageSourceArray[3]); //not alerting the source, boo hoo.
我需要遍歷$(「#leDiv IMG」),每個SRC字符串添加到單獨的陣列?還是有更好的方法來做到這一點?
可以使用被描述爲jQuery's map功能:
通過一個函數傳遞當前匹配集合中的每個元素,產生一個包含返回值的新jQuery對象。
對於示例:
var mySources = $('#leDiv img').map(function() {
return $(this).attr('src');
}).get();
var imageSourceArray = [];
$('#leDiv img').each(function(){
var src = $(this).attr("src");
imageSourceArray.push(src);
});
alert(imageSourceArray[3]);
編輯:遠更優雅的解決方案,有很明顯仍有一些循環內部涉及:
var img_sources = $('#leDiv img').map(function(){ return $(this).attr('src') });
你其實需要循環收集和單獨添加源。
var img_sources = [];
$('#leDiv img').each(function(i,e){
img_sources.push($(e).attr('src'))
})
一些背景資料:jQuery.fn.attr()
映射到jQuery.access()
內部,其中的關鍵部分是這樣的:
function(elems, key, value, exec, fn, pass) {
var length = elems.length;
// setter functions omitted here …
// Getting an attribute
return length ? fn(elems[0], key) : undefined;
}
注elems[0]
部分 - 只有第一個項目集合中被送到後續的回調函數(jQuery.attr()
實際上)負責提取信息。
謝謝您的回答,我希望有一種方法來避免每個語句。看起來這是不可能的。以防萬一,以防萬一。我現在正在使用你的答案。 – Finnnn 2012-03-06 10:00:17
當您獲取圖像時,您已在集合中擁有src。這可能是更有效的不是SRC屬性存儲在另一個數組:
$('#leDiv img').each(function(i,e){
var dosomethingwith = $(e).attr('src');
})
,或者你可以這樣做:
var ImageCol = $('#leDiv img');
alert(ImageCol[3].attr('src'));
不錯 - 不確定我完全理解它。 *去看看jQuery文檔* – Finnnn 2012-03-06 10:12:00