获取div中所有已选中复选框的ID

时间:2013-10-22 14:32:49

标签: javascript jquery

我试图在div中动态附加复选框。

我想要一个javascript函数来执行以下操作:

  • 当我选中一个复选框时:将其id添加到数组中。
  • 当我取消选中一个复选框时:从该数组中删除id。

这是我到目前为止所做的:

var chkArray = [];
$(".Checked:checked").each(function () {
    chkArray.push($(this).attr("id"));
});
var selected;
selected = chkArray.join(',') + ",";
if (selected.length > 1) {
    return chkArray;
}

5 个答案:

答案 0 :(得分:5)

我不确定你为什么要加入阵列 - 所以我没有把它包括在内。但这是一个基本方法。 $.map()将迭代复选框数组并返回当前元素的id,仅在检查时才返回。然后$.map()将返回的值存储在新数组(chkArray)中:

$checkbox = $('.Checked');
function checkArray(){
    var chkArray = [];
    chkArray = $.map($checkbox, function(el){
        if(el.checked) { return el.id };
    });
    console.log(chkArray);
}

JSFiddle

答案 1 :(得分:1)

我测试了George的jsfiddle并且无法让它工作但是编辑了他的代码并使它工作你可以尝试这是工作

 $('#PostAlert').click(function GetID() {

            $checkbox = $('.CheckBxMSG');
            var chkArray = [];
            chkArray = $.map($checkbox, function (el) {
                if (el.checked) { return el.id };
            });
            alert(chkArray);
        })

答案 2 :(得分:0)

取而代之的是使用您的表单ID并在提交时检查所有选中的复选框是什么

$("#formid input:checkbox:checked").each(function() {
  var chkArray = [];
  chkArray.push($(this).id());
});

答案 3 :(得分:0)

这应该按照你的描述进行

var checkboxes = $("input[type=checkbox]");
var r = [];

checkboxes.on("change",function(e){ 
    if(!e.target.id){
        return;  
    } 
    if(e.target.checked){
        r.push(e.target.id);
    }
    else{
        var index = r.indexOf(e.target.id)
        if(~index){
            r.splice(index, 1);
        }               
    }
    console.log(r);
});

答案 4 :(得分:0)

这就是我要做的事情:

var checkedArray = [];

$(":checkbox").change(function(){
  if((this).checked){
    checkedArray.push(this.id);
  }
  else{
    checkedArray.splice(checkedArray.indexOf(this.id), 1);
  }

  //you can call your function here if you need to act on this.

});

Codepen