jQuery:测试是否未选中复选框

use*_*259 104 jquery if-statement

我很难搞清楚这一点.我有两个复选框(将来会有更多):

  • checkSurfaceEnvironment-1
  • checkSurfaceEnvironment-2

基本上,我想编写一个if语句并测试是否检查了其中一个而未检查另一个.完成以下操作的最简单方法是什么:

if ( $("#checkSurfaceEnvironment-1").attr('checked', true) &&
     $("#checkSurfaceEnvironment-2").is('**(NOT??)** :checked') ) {
        // do something
}
Run Code Online (Sandbox Code Playgroud)

Pab*_*her 197

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

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

如果要迭代已检查的元素,请使用父元素

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

更多信息:

这很有效,因为所有复选框都选中了一个属性,该属性存储了复选框的实际状态.如果您希望可以检查页面并尝试选中并取消选中一个复选框,您会注意到"已检查"属性(如果存在)将保持不变.此属性仅表示复选框的初始状态,而不是当前状态.当前状态存储在该复选框的dom元素的已检查属性中.

请参阅HTML中的属性和属性

  • 嗯......这只会设置`checked = true` (2认同)

shw*_*eta 73

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


Ane*_*ran 30

您还可以使用jQuery .not()方法或:not()选择器:

if ($('#checkSurfaceEnvironment').not(':checked').length) {
    // do stuff for not selected
}
Run Code Online (Sandbox Code Playgroud)

JSFiddle示例


补充说明

:not() 选择器的jQuery API文档:

除了将复杂的选择器或变量推送到:not()选择器过滤器之外,.not() 方法最终会为您提供更多可读选择.在大多数情况下,这是一个更好的选择.


Tru*_*ufa 22

另一种方式:

这是一个工作示例,这里是代码,您还应该使用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");
    }
});?
Run Code Online (Sandbox Code Playgroud)

我注释了切换checked属性的方法.


Zol*_*oth 9

if ( $("#checkSurfaceEnvironment-1").is(":checked") && $("#checkSurfaceEnvironment-2").not(":checked") )
Run Code Online (Sandbox Code Playgroud)


Mic*_*ura 8

我认为(使用 jQuery)检查复选框是否被选中的最简单方法是:

如果“检查”:

if ($(this).is(':checked')) {
// I'm checked let's do something
}
Run Code Online (Sandbox Code Playgroud)

如果没有“检查”:

if (!$(this).is(':checked')) {
// I'm NOT checked let's do something
}
Run Code Online (Sandbox Code Playgroud)


MsG*_*erl 6

我正在寻找像avijendr建议的更直接的实现.

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

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

就我而言,我有一个表的一类user-forms,而我检查,如果任何有串的复选框checkPrint他们id都听之任之.