检查click - jQuery上是否未选中复选框

w00*_*w00 79 jquery

我想检查当用户点击它时是否取消选中复选框.这是因为我想在用户取消选中复选框时进行验证.因为需要检查至少一个复选框.因此,如果他取消选中最后一个,那么它会再次自动检查.

使用jQuery,我可以很容易地发现它是否经过检查:

$('#check1').click(function() {
    if($(this).is(':checked'))
        alert('checked');
    else
        alert('unchecked');
});
Run Code Online (Sandbox Code Playgroud)

但实际上我只想要一个if语句来检查一个复选框是否被取消选中.

所以我想我可以用以下代码做到这一点:

$('#check2').click(function() {
    if($(this).not(':checked'))
        alert('unchecked');
    else
        alert('checked');
});
Run Code Online (Sandbox Code Playgroud)

但这将始终显示"未经检查"的消息.不是我真正期待的......

演示: http ://jsfiddle.net/tVM5H/

所以最终我需要这样的东西:

$('#check2').click(function() {
    if($(this).not(':checked')) {
        // Got unchecked, so something!!!
    }
});
Run Code Online (Sandbox Code Playgroud)

但显然这不起作用.我宁愿不想使用第一个例子,因为当我只需要一个'if'语句时,我会有一个不必要的'else'语句.

首先,这是一个jQuery错误吗?对我来说这是出乎意料的行为.第二,任何人都想要一个好的选择吗?

ant*_*rat 150

试试这个:

if(!$(this).is(':checked'))
Run Code Online (Sandbox Code Playgroud)

演示


小智 43

已发布的答案将有效.如果你想使用jQuery:不是你可以这样做:

if ($(this).is(':not(:checked)'))
Run Code Online (Sandbox Code Playgroud)

要么

if ($(this).attr('checked') == false)
Run Code Online (Sandbox Code Playgroud)


The*_*heZ 7

jQuery 检查检查?真的吗?

if(!this.checked) {
Run Code Online (Sandbox Code Playgroud)

不要使用火箭筒来完成剃须刀的工作。

  • 如果使用 jQuery 来查找元素,它应该读为 `$(this)[0].checked` (4认同)

Nan*_*mar 5

$(document).ready(function() {
        $("#check1").click(function() {
            var checked = $(this).is(':checked');
            if (checked) {
                alert('checked');
            } else {
                alert('unchecked');
            }
        });
    });
Run Code Online (Sandbox Code Playgroud)