我有一个复选框列表,在页面加载时预先选中了所有复选框。
首先,我想读取所有复选框(已选中)值并存储在全局数组中。
稍后,每当用户点击任何复选框(未选中/选中)时,我都希望使用仅选中复选框的值更新数组。
我想在jQuery中做这一切。
感谢
答案 0 :(得分:4)
<input type="checkbox" value="somevalue1" class="chk">
<input type="checkbox" value="somevalue2" class="chk">
<input type="checkbox" value="somevalue3" class="chk">
<input type="checkbox" value="somevalue4" class="chk">
<input type="checkbox" value="somevalue5" class="chk">
<script>
var someGlobalArray = new Array;
$(".chk").click(function() {
someGlobalArray=[];
$('.chk:checked').each(function() {
someGlobalArray.push($(this).val());
});
console.log(someGlobalArray);
});
</script>
答案 1 :(得分:2)
你的意思是这样吗?
var arrCheckboxes;
var checkboxSelector = "input[type='checkbox']";
$("body").delegate(checkboxSelector , "click", function(){
arrCheckboxes = $(checkboxSelector).map(function() {
return this.checked;
}).get();
});
(也许您应该将$(“body”)更改为更精确的容器)
如果你想要一个包含名称(...或id或者元素)的对象的数组......你可以这样做:
var arrCheckboxes;
var checkboxSelector = "input[type='checkbox']";
$("body").delegate(checkboxSelector , "change", function(){
arrCheckboxes = $(checkboxSelector).map(function() {
return { name: this.name, val: this.checked };
}).get();
});
答案 2 :(得分:0)
我认为您需要的是已检查项目的名称或 id ,因为复选框值是布尔值?
var checked = {};
$(':input[type="checkbox"]').each(function() {
var name= this.name;
var val = this.checked;
if (val) {
checked[name] = val;
}
}).on('change', function() {
var name = this.name;
var val = this.checked;
if (val) {
checked[name] = val;
} else {
delete checked[name];
}
});
对象checked
将包含键,只有与已检查项对应的对象才会出现在该对象中。