JQUERY:获取已检查且未选中的复选框的ID
我没有这么多复选框:
...................
现在,我要做的是获取所有带复选框的ID复选框,不检查并放入数组。 像这样的东西:
"fruitsGranted":["apple","lomboy","orange"]; //check is true "fruitsDenied":["mango","santol","guava"]; //check false
可以请有人告诉我该怎么做。 谢谢。
var someObj={}; someObj.fruitsGranted=[]; someObj.fruitsDenied=[]; $("input:checkbox").each(function(){ var $this = $(this); if($this.is(":checked")){ someObj.fruitsGranted.push($this.attr("id")); }else{ someObj.fruitsDenied.push($this.attr("id")); } });
我想我的版本更短了:
var idSelector = function() { return this.id; }; var fruitsGranted = $(":checkbox:checked").map(idSelector).get(); var fruitsDenied = $(":checkbox:not(:checked)").map(idSelector).get();
你可以在这里看到它: http : //jsfiddle.net/XPMjK/3/
我会这样做:
var all, checked, notChecked; all = $("input:checkbox"); checked = all.filter(":checked"); notChecked = all.not(":checked)");
之后,您可以使用jQuery.map来获取每个集合的ID。
var checkedIds = checked.map(function() { return this.id; }); var notCheckedIds = notChecked.map(function() { return this.id; });
这可以使用.map
来完成,但在这种情况下它与使用.each
没有什么不同:
$(":checkbox").change(function() { var notChecked = [], checked = []; $(":checkbox").map(function() { this.checked ? checked.push(this.id) : notChecked.push(this.id); }); alert("checked: " + checked); alert("not checked: " + notChecked); });
你可以在这里测试一下。