JQuery检查checkbox是否被选中

我很难解决这个问题。 我有两个checkbox(将来会有更多):

checkSurfaceEnvironment-1
checkSurfaceEnvironment-2

基本上,我想写一个if语句并testing是否被选中。 什么是最简单的方法来完成这个? (即,如果checkSurfaceEnvironment-1被选中并且checkSurfaceEnvironment-2不是…做某事)

if ( $("#checkSurfaceEnvironment-1").attr('checked', true) && $("#checkSurfaceEnvironment-2").is('**(NOT??)** :checked') ) 

我使用的一个可靠的方法是:

 if($("#checkSurfaceEnvironment-1").prop('checked') == true){ //do something } 

如果你想迭代选中的元素,使用父元素

 $("#parentId").find("checkbox").each(function(){ if ($(this).prop('checked')==true){ //do something } }); 

更多信息:

这很好,因为所有的checkbox都有一个属性被选中,用来存储checkbox的实际状态。 如果你希望你可以检查页面,并尝试检查和取消选中一个checkbox,你会注意到“checked”属性(如果存在)将保持不变。 该属性仅表示checkbox的初始状态 ,而不表示当前状态。 当前状态存储在该checkbox的dom元素的检查属性中。

请参阅HTML中的属性和属性

 if (!$("#checkSurfaceEnvironment-1").is(":checked")) { // do something if the checkbox is NOT checked } 

另一种方法:

这里是一个工作的例子 ,这里是代码,你也应该使用prop。

 $('input[type="checkbox"]').mouseenter(function() { if ($(this).is(':checked')) { //$(this).prop('checked',false); alert("is checked"); } else { //$(this).prop('checked',true); alert("not checked"); } });​ 

我注释了切换选中属性的方式。

你也可以使用jquery 而不是select器

 if($('#checkSurfaceEnvironment').not(':checked').length){ // do stuff for not selected } 

http://api.jquery.com/not-selector/

Jsfiddle示例:

https://jsfiddle.net/1b07bqsu/16/

 if ( $("#checkSurfaceEnvironment-1").is(":checked") && $("#checkSurfaceEnvironment-2").not(":checked") ) 

我正在寻找像avijendrbuild议的更直接的实施。

我的语法有点麻烦,但我得到了这个工作:

 if ($('.user-forms input[id*="chkPrint"]:not(:checked)').length > 0) 

在我的情况下,我有一个类的user-forms ,我正在检查是否任何checkbox的stringcheckPrint在他们的id没有选中。

要像.attr()这样做,看看它是否被检查.attr("checked", "checked") ,如果不是,它会是.attr("checked") == undefined

这里有最好的摘录这个quetions

 $(function(){ $("#buttoncheck").click(function(){ if($('[type="checkbox"]').is(":checked")){ $('.checkboxStatus').html("Congregation ! "+$('[type="checkbox"]:checked').length+" checkbox checked"); }else{ $('.checkboxStatus').html("Sorry! Checkbox is not checked"); } return false; }) }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <form> <p> <label> <input type="checkbox" name="CheckboxGroup1" value="checkbox" id="CheckboxGroup1_0"> Checkbox</label> <br> <label> <input type="checkbox" name="CheckboxGroup1_" value="checkbox" id="CheckboxGroup1_1"> Checkbox</label> <br> </p> <p> <input type="reset" value="Reset"> <input type="submit" id="buttoncheck" value="Check"> </p> <p class="checkboxStatus"></p> </form> 

如果所有的checbox都在div中被选中,则返回true

 function all_checked (id_div){ all_checked = true; $(id_div+' input[type="checkbox"]').each(function() { all_checked = all_checked && $('this').prop('checked'); } return all_checked; } 

简单和容易检查或未检查的情况

 <input type="checkbox" id="ev-click" name="" value="" > <script> $( "#ev-click" ).click(function() { if(this.checked){ alert('checked'); } if(!this.checked){ alert('Unchecked'); } }); </script> 

试试这个

 if ($("#checkSurfaceEnvironment-1:checked").length>0) { //your code in case of NOT checked } 

在上面的代码中,通过Id (#checkSurfaceEnvironment-1)select元素,然后通过(:checked)筛选器筛选它的检查状态。

它将返回检查的元素对象的数组。 如果数组中存在任何对象,则满足条件。

我用这个在为我工作!

 $("checkbox selector").click(function() { if($(this).prop('checked')==true){ do what you need! } });