请原谅我糟糕的javascript知识。
我正在尝试返回一组ID值,例如[1,2,4],来自标记为“已选中”的DOM元素。
<tr data-selected = 'true' data-id = '1'></tr>
<tr data-selected = 'true' data-id = '2'></tr>
<tr data-selected = 'false' data-id = '3'></tr>
<tr data-selected = 'true' data-id = '4'></tr>
我尝试为此
创建coffeescript函数elems = $("tr[data-selected ='true']").data("id")
alert( elems )
这似乎只返回最后一个元素的data-id值。
如何创建所有ID值的数组?
答案 0 :(得分:7)
尝试
$('tr[data-selected="true"]').map(function(){
return $(this).data('id');
}).get();
<强> Demo 强>
当您在返回多个项目的选择器上使用attr / data时,它将仅从第一个匹配的元素中获得结果。因此,使用.map获取特定的dat attrib值并从jquery对象集合转换为数组。
原因在于.attr/data
的实施方式。
// Gets
bulk ?
fn.call( elems ) :
length ? fn( elems[0], key ) : emptyGet; //<-- snippet from jquery just considers the first element.
答案 1 :(得分:0)
你也可以使用.each
函数
$(document).ready(function(){
var ids = [];
elems = $("tr[data-selected=true]").each(function(){
ids.push($(this).attr('data-id'));
});
console.log(ids);
})
<tr data-selected = 'true' data-id = '1'></tr>
<tr data-selected = 'true' data-id = '2'></tr>
<tr data-selected = 'false' data-id = '3'></tr>