jQuery,checkboxes和.is(":checked")

Ben*_*Ben 86 checkbox jquery click ischecked

当我将一个函数绑定到一个复选框元素,如:

$("#myCheckbox").click( function() {
    alert($(this).is(":checked"));
});
Run Code Online (Sandbox Code Playgroud)

复选框触发事件之前更改其已检查的属性,这是正常行为,并给出反向结果.

但是,当我这样做时:

$("#myCheckbox").click();
Run Code Online (Sandbox Code Playgroud)

触发事件,复选框会更改其检查属性.

我的问题是,有没有办法从jQuery触发click事件,就像普通点击一样(第一个场景)?

PS:我已经尝试过trigger('click');

tcu*_*rdt 88

$('#myCheckbox').change(function () {
    if ($(this).prop("checked")) {
        // checked
        return;
    }
    // not checked
});
Run Code Online (Sandbox Code Playgroud)

注意:在旧版本的jquery中,可以使用它attr.现在建议用它prop来读取状态.

  • 对于较新版本的jquery,该函数是prop("checked")而不是attr("checked"),以防其他人被捕. (19认同)

Nic*_*ver 27

在jQuery 1.3.21.4.2中有一个可行的解决方法:

$("#myCheckbox").change( function() {
    alert($(this).is(":checked"));
});

//Trigger by:
$("#myCheckbox").trigger('click').trigger('change');?????????????
Run Code Online (Sandbox Code Playgroud)

但我同意,与本机事件相比,这种行为似乎有些麻烦.


ato*_*ess 10

截至2016年6月(使用jquery 2.1.4),其他任何建议的解决方案都不起作用.检查attr('checked')始终返回undefinedis('checked)始终返回false.

只需使用prop方法:

$("#checkbox").change(function(e) {

  if ($(this).prop('checked')){
    console.log('checked');
  }
});
Run Code Online (Sandbox Code Playgroud)

  • `is('checked)`将返回false,因为"checked"不是CSS伪选择器.正确的应该是`is(':checked')`所以它寻找":checked"而不是. (2认同)