查找并阅读所有选中的复选框,并将其名称推送到数组中

时间:2011-04-27 12:44:04

标签: jquery

我的页面上有多个复选框并使用javascript我想找到所有复选框并按如下方式将其各自的名称推送到数组中:

    var Names = new Array();
 $.each($(':checked'), function (key, value) {
 Name.push($(value).attr("name"));
 }); 

上述代码有什么问题?

5 个答案:

答案 0 :(得分:3)

更“实用”的方式:

var names = $('input[type="checkbox"]:checked').map(function() {
    return this.name;
}).get();

或者最好不要使用:checked伪选择器,以便jQuery可以更好地利用浏览器功能:

var names = $('input[type="checkbox"]').map(function() {
    if(this.selected) {
        return this.name;
    }
    return null;
}).get();

参考: .map.get

答案 1 :(得分:1)

var Names = new Array();
 $(':checkbox:checked').each( function (key, value) {
     Name.push($(value).attr("name"));
 }); 

甚至更容易:

var Names = new Array();
$(':checkbox:checked').each( function () {
    Name.push( $( this ).attr( "name" ) );
}); 

答案 2 :(得分:1)

您不能只通过伪元素选择::checked。您必须选择所有已检查的<input type="checkbox">元素:

var Names = new Array();
$.each($('input[type="checkbox"]:checked'), function (key, value) {
    Name.push($(value).attr("name"));
}); 

答案 3 :(得分:0)

 var Names = new Array();
 $.each($('input:checked'), function (key, value) {
 Names.push($(value).attr("name"));
 }); 

你正在使用名字和名字 - 2个不同的呃......名字

答案 4 :(得分:0)

这正是jQuery map函数的原因。

var Names = $(':checkbox:checked').map(function (value) {
     return value.name;
 });