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")); } }); 

http://jsfiddle.net/UqrYJ/

我想我的版本更短了:

 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); }); 

你可以在这里测试一下。