如何使用javascript返回数据属性数组?

And*_*vey 1 javascript coffeescript

请原谅我糟糕的javascript知识.

我正在尝试从标记为"已选择"的DOM元素返回一个ID值数组,例如[1,2,4].

<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>
Run Code Online (Sandbox Code Playgroud)

我试图为此创建一个coffeescript函数

elems = $("tr[data-selected ='true']").data("id")    
alert( elems )
Run Code Online (Sandbox Code Playgroud)

这似乎只返回最后一个元素的data-id值.

如何创建所有ID值的数组?

PSL*_*PSL 7

尝试

$('tr[data-selected="true"]').map(function(){
    return $(this).data('id');
}).get();
Run Code Online (Sandbox Code Playgroud)

演示

当您在返回多个项目的选择器上使用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.
Run Code Online (Sandbox Code Playgroud)