首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >选中、复选框和.is(“:jQuery”)

选中、复选框和.is(“:jQuery”)
EN

Stack Overflow用户
提问于 2010-04-18 06:33:45
回答 12查看 266.9K关注 0票数 93

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

代码语言:javascript
复制
$("#myCheckbox").click( function() {
    alert($(this).is(":checked"));
});

checkbox在触发事件之前更改其选中的属性,这是正常行为,并提供相反的结果。

然而,当我这样做的时候:

代码语言:javascript
复制
$("#myCheckbox").click();

在触发事件后,该复选框会将其更改为 attribute

我的问题是,有没有一种方法可以像普通的点击一样从jQuery触发点击事件(第一种情况)?

PS:我已经用过trigger('click')了;

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2010-04-18 06:56:43

代码语言:javascript
复制
$('#myCheckbox').change(function () {
    if ($(this).prop("checked")) {
        // checked
        return;
    }
    // not checked
});

注意:在旧版本的jquery中,使用attr是可以的。读取状态的Now it's suggested to use prop

票数 104
EN

Stack Overflow用户

发布于 2010-04-18 07:06:50

在jQuery 1.3.21.4.2中有一种解决方法

代码语言:javascript
复制
$("#myCheckbox").change( function() {
    alert($(this).is(":checked"));
});

//Trigger by:
$("#myCheckbox").trigger('click').trigger('change');​​​​​​​​​​​​​

但我同意,与原生事件相比,这种行为似乎有缺陷。

票数 27
EN

Stack Overflow用户

发布于 2016-06-13 17:05:43

截至2016年6月(使用jquery 2.1.4),其他建议的解决方案都不起作用。检查attr('checked')总是返回undefined,检查is('checked)总是返回false

只需使用prop方法:

代码语言:javascript
复制
$("#checkbox").change(function(e) {

  if ($(this).prop('checked')){
    console.log('checked');
  }
});
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2660323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档