jQuery获取选中复选框的值到数组中

IT技术 javascript jquery
2021-01-24 05:31:22

我试图获取当前选中的所有复选框的值并将它们存储到一个数组中。到目前为止,这是我的代码:

 $("#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:”constructor:1.9]、jquery.jquery.init:1、[3]

我只想要 ID(在这种情况下是前 3 个项目)。

通过使用$.each并将值推送到数组,我得到了所需的输出:

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

[“51729b62c9f2673e4c000004”、“517299e7c9f26782a7000003”、“51729975c9f267f3b5000002”]

但是我想使用$.map,因为它为我节省了一行代码并且更漂亮。

谢谢

6个回答

.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() 以使用基本数组是很常见的。

非常感谢,我需要这个给 ma Ticketcenter
2021-03-15 05:31:22
我不明白的是为什么.get()需要 ,当函数.val()从 jQuery 集合中的每个项目返回这是因为map在将其传递给 之前将其转换回 jQuery 对象searchIDs吗?
2021-03-18 05:31:22
我期待真正的 Array 来自$.map. 感谢您的解决方案,它的工作原理。
2021-03-19 05:31:22
我们可以获取数组类型的值吗?
2021-04-07 05:31:22

演示: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();

您需要添加.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/

我稍微重构了您的代码,并相信我提供了您正在寻找的解决方案。基本上searchIDs.map()我只是将值推送到数组中,而不是设置为结果

$("#merge_button").click(function(event){
  event.preventDefault();

  var searchIDs = [];

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

  console.log(searchIDs);
});

我创建了一个运行代码小提琴

     var ids = [];

$('input[id="find-table"]:checked').each(function() {
   ids.push(this.value); 
});

这个对我有用!