【问题标题】:Checking the checked status of a checkbox upon its click单击复选框时检查其选中状态
【发布时间】:2012-04-18 02:35:09
【问题描述】:

我正在尝试在单击复选框时测试其状态。

我的问题是它总是报告为 true,因为它在更改事件发生之后而不是之前报告状态。

有没有我可以在更改之前进行测试。

当前使用 jQuery 的代码 - 'package' 类的所有复选框:

$(".package").click(function(){
    if($(this).is(":checked")){
        alert($(this).attr("checked"));
    }
});

即使选择了当前未选中的复选框,这也始终返回 true。

编辑:好吧,似乎有一些旧的 js 干扰了这个过程,在清理之后,点击功能确实有效。谢谢大家。

【问题讨论】:

  • 你可以使用 change 事件来代替: $(".package").change(function() { // value has changed });
  • 不幸的是 change 事件导致了同样的问题(至少在 FF 中,atm 我没有扩展测试)
  • 嗨,试试这个:stackoverflow.com/questions/4817735/…欢呼!
  • 有没有办法查看受影响的实际 HTML 片段?

标签: javascript jquery class checkbox click


【解决方案1】:

click 事件在实际文本框更改发生之前触发,您需要订阅 change 事件:

$(".package").change(function(){
    if($(this).is(":checked")){
        alert($(this).attr("checked"));
    }
});

编辑:尝试查询实际的 Javascript 对象本身,应该可以工作

$(".package").change(function(){
    if(this.checked){
        alert(this.checked);
    }
});

【讨论】:

  • 不幸的是,即使之前没有检查过,所有内容仍然报告为 true
  • @mr12086 检查我的编辑,这对我有用:)。如果它不适合您,您能否向我们展示您的 HTML?
【解决方案2】:

在复选框上使用 onchange 事件不是 cross-browser(你好 IE!是的,即使使用 jQuery)。

以下作品:

$('.package').click(function() {
    console.log(this.checked) // There is no need for jQuery here
})

选中复选框时记录“真”,取消选中时记录“假”。

说真的,使用 $(this).attr('checked')$(this).is(':checked') 只是 jQueryception 没有用。

【讨论】:

  • 不幸的是,仍然报告一切都是真实的
  • 我想了解更多关于您的环境的信息 :)
【解决方案3】:

您可以改用更改事件,这样您就可以确定之前检查的状态总是与您现在阅读的相反

$(".package").change(function() {
    alert($(this).attr("checked"));
});

【讨论】:

  • 不幸的是,仍然报告一切都是真实的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-26
  • 1970-01-01
  • 2017-03-01
  • 2010-09-25
  • 1970-01-01
相关资源
最近更新 更多