1

JavaScriptの知識が乏しいことをお許しください。

「選択済み」とマークされた DOM 要素から [1,2,4] などの ID 値の配列を返そうとしています。

<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 値の配列を作成するにはどうすればよいですか?

4

2 に答える 2

8

試す

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

デモ

複数の項目を返すセレクターで attr/data を使用すると、最初に一致した要素のみから結果が得られます。したがって、.mapを使用して特定の dat 属性値を取得し、jquery オブジェクト コレクションから配列に変換します。

その理由.attr/dataは実装方法にあります。

// Gets
bulk ?
    fn.call( elems ) :
    length ? fn( elems[0], key ) : emptyGet; //<-- snippet from jquery just considers the first element.
于 2013-10-02T01:49:26.597 に答える
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>

http://jsbin.com/iqEYAPI/1/edit

于 2013-10-02T01:52:51.840 に答える