2012-06-19 46 views
2

我試圖獲取<div>中的所有找到的元素,但默認情況下它會在找到第一個匹配項時停止,但我希望它列出每個找到的元素的id值。查找並列出每個元素的id值

所以這不起作用:

listy = $("DIV").find("SPAN").attr("id"); 

我一直在嘗試與.get.map,但我想他們是不是我想要的..

+1

大多數JavaScript,jQuery的開發人員使用小寫字母標記名稱,所以'div',而不是'DIV'和'span'而不是'SPAN'相信它或不使用'DIV SPAN'就像大喊... – gdoron

+0

@gdoron +1我寧願說:*「這就像發誓」* :) –

回答

12
listy = $("div").find("span").map(function(){ 
    return this.id; 
}).get(); 

沒有find是即使更好

listy = $("div span").map(function(){ 
    return this.id; 
}).get(); 

Live DEMO

如果只想<span>id屬性定義,選擇更改爲:

$(div span[id]).map(...) 

如果你想把所有的id S作爲一個字符串:

listy = $("div span").map(function(){ 
    return this.id; 
}).get().join(''); 

join的參數是分隔符,例如.join('-').join(',')或不具有:.join('')

+0

卓越是你的! – TrySpace

1

也許這樣?

var ids = []; 

$("div span").each(function() { 
    if (this.id) { 
    ids.push(this.id); 
    } 
}); 

attr()方法將始終僅返回第一個元素屬性。

+0

'map'爲您開箱即用,只需一行代碼。 – gdoron

+0

@gdoron我喜歡它,並upvoted以及; – ioseb

+0

+1,但我會很高興,如果你可以將'DIV'和'SPAN'更改爲小寫,它困擾我的眼睛... :) – gdoron

1
var listy = ''; 

$("div span").each(function(){ 
    listy += this.id ; 
}); 

jsBin demo


或者像:

var listy = [];       // create array 

$("div span[id]").each(function(){  // span with ID data 
    listy.push(this.id);     // push ID names into array 
}); 

// Now use listy.join(); to see the list 
// you can also do: listy+'' to transform it into string. 

jsBIn demo 2

+0

如果你想要一個字符串格式,你怎麼看這個:'(「div span」)。map(function(){ return this.id; })。get()。join('' );'? – gdoron

+0

謝謝,很好的一個兄弟!我喜歡'+ =':) –

+0

+1,這是一個很好的答案,(如果這是他想要的)+1 – gdoron