140

現在チェックされているすべてのチェックボックスの値を取得して配列に保存しようとしています。これまでの私のコードは次のとおりです。

 $("#merge_button").click(function(event){
    event.preventDefault();
    var searchIDs = $("#find-table input:checkbox:checked").map(function(){
      return $(this).val();
    });
    console.log(searchIDs);
  });

ただし、これは必要以上に出力されます。値を取得するだけでなく、他の不要なものも取得します。

["51729b62c9f2673e4c000004"、"517299e7c9f26782a7000003"、"51729975c9f267f3b5000002"、prevObject: jQuery.fn.jQuery.init[3]、コンテキスト: ドキュメント、jquery: "1.9.1"、コンストラクター: 関数、init: 関数…]

ID のみを希望します (この場合は最初の 3 項目)。

値を使用$.eachして配列にプッシュすることで、目的の出力が得られます。

$("#find-table input:checkbox:checked").each(function(){ myArray.push($(this).val()); })

["51729b62c9f2673e4c000004", "517299e7c9f26782a7000003", "51729975c9f267f3b5000002"]

$.mapただし、コード行を節約でき、よりきれいなので、を使用したいと思います。

ありがとう

4

9 に答える 9

289

最後に呼び出し.get()て、結果の jQuery オブジェクトを真の配列に変換します。

$("#merge_button").click(function(event){
    event.preventDefault();
    var searchIDs = $("#find-table input:checkbox:checked").map(function(){
      return $(this).val();
    }).get(); // <----
    console.log(searchIDs);
});

ドキュメントごと:

戻り値は配列を含む jQuery オブジェクトであるため、結果に対して .get() を呼び出して基本的な配列を操作することは非常に一般的です。

于 2013-04-23T13:52:37.637 に答える
25

デモ: http://jsfiddle.net/PBhHK/

$(document).ready(function(){

    var searchIDs = $('input:checked').map(function(){

      return $(this).val();

    });
    console.log(searchIDs.get());

});

get() を呼び出すだけで、仕様に書かれているとおりの配列が得られます: http://api.jquery.com/map/

$(':checkbox').map(function() {
      return this.id;
    }).get().join();
于 2013-04-23T13:54:33.160 に答える
18

関数.toArray()の最後に追加する必要があります.map()

$("#merge_button").click(function(event){
    event.preventDefault();
    var searchIDs = $("#find-table input:checkbox:checked").map(function(){
        return $(this).val();
    }).toArray();
    console.log(searchIDs);
});

デモ: http://jsfiddle.net/sZQtL/

于 2013-04-23T13:50:18.267 に答える
0

「それぞれ」は使用しないでください。同じ要素内の操作と変更に使用されます。「マップ」を使用して要素本体からデータを抽出し、それを別の場所で使用します。

于 2015-02-20T10:01:23.273 に答える