我有一个复选框列表,当页面加载时所有复选框都被预先选中。
首先,我想读取所有复选框(已选中)的值并存储在全局数组中。
然后,每当用户点击任何复选框(取消选中/选中),我都希望仅更新已选中复选框的值。
我想在jQuery中完成所有这些操作。
谢谢
我有一个复选框列表,当页面加载时所有复选框都被预先选中。
首先,我想读取所有复选框(已选中)的值并存储在全局数组中。
然后,每当用户点击任何复选框(取消选中/选中),我都希望仅更新已选中复选框的值。
我想在jQuery中完成所有这些操作。
谢谢
<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>
var arrCheckboxes;
var checkboxSelector = "input[type='checkbox']";
$("body").delegate(checkboxSelector , "click", function(){
arrCheckboxes = $(checkboxSelector).map(function() {
return this.checked;
}).get();
});
如果你想要一个包含名称(或ID或元素)的对象数组,可以像这样操作:
也许你应该将$("body")更改为更精确的容器。
var arrCheckboxes;
var checkboxSelector = "input[type='checkbox']";
$("body").delegate(checkboxSelector , "change", function(){
arrCheckboxes = $(checkboxSelector).map(function() {
return { name: this.name, val: this.checked };
}).get();
});
我猜你想要的是被选中项目的名称或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
将包含键,只有那些对应于已选中项目的键才会出现在该对象中。
工作演示请参见http://jsfiddle.net/tFYPF/