2013-07-13 53 views
-1

我試圖從多個div中獲取具有相同類的data元素。這裏是我到目前爲止的代碼:獲取多個div的.attr()

var dataArr = new Array(); 
$(".foo").each(function(){ 
    for (i = 0; i < $(".foo").length; i++) { 
    dataArr[i] = $(this).attr("data"); 
} 
}); 

$(".array").text(dataArr); 

這段代碼的問題是,當你運行它,它僅保存最後data在陣列的各項指標。我有一個jsfiddle來演示我正在嘗試做什麼。 http://jsfiddle.net/AzRp2/

+6

您有一個額外的for循環在你的'.each',你去那裏的http://的jsfiddle .net/d3Cq9 /。下次請在這裏提問時考慮檢查[API文檔中的示例](http://api.jquery.com/jQuery.each/):)祝您好運,祝您編程愉快! –

+1

加油!爲什麼投票? – 2013-07-13 19:23:33

+0

@TamilVendhan不是我,但可能缺乏研究努力或有用性,這是什麼downvotes表明。 –

回答

4

,爲什麼你有一個each環內for循環.... actaully你不需要使用循環在all..use map() ... 正確的使用HTML5數據屬性是data-something ..和您可以使用data()來獲得該值而不是attr();

HTML

<div class="foo" data-test="111"> Hello </div> 
    <div class="foo" data-test="222"> World </div> 
    <div class="array"></div> 

jQuery的

var dataArr =$(".foo").map(function(i,v){ 

    return $(this).data("test"); 

}).get(); 

$(".array").text(dataArr); 

fiddle here

+1

很整潔! :-) –

+0

@AtifMohammedAmeenuddin謝謝..:)... – bipen

1

試試這個:

//Create an empty array 
var dataArr = []; 

// Loop through all the div's 
$(".foo").each(function (index) { 

    // Push the data into the array 
    dataArr.push($(this).attr("data")); 
}); 

// open console to see the array 
console.log(dataArr); 
+1

如果你打算提供一個解決方案(相當有趣的問題),我可以建議.map?這似乎是一個理想的契合。雖然我們在那裏,我認爲本地'Array.prototype.map.call(document.getElementsByClassName(「foo」),function(e){return e.getAttribute(「data」);})' –

1

難道你想做到這一點?

var dataArr = new Array(); 
$(".foo").each(function() { 
    dataArr.push($(this).attr("data")); 
}); 

$(".array").text(dataArr.join(",")); 
+0

'調試器;'' :)? –

+0

我交叉檢查之前提交你知道..新手;-) –