jquery复选框选中的属性和三元运算符[重复]

Posted

技术标签:

【中文标题】jquery复选框选中的属性和三元运算符[重复]【英文标题】:jquery checkbox checked property and ternary operator [duplicate] 【发布时间】:2017-06-04 17:28:43 【问题描述】: Windows 7 VisualStudio 2015 C# .Net MVC jQuery 3.1.1

我一定遗漏了一些微不足道的东西。我有一个复选框,并在其上设置了一个 data 元素,该元素包含项目的“id”编号(索引)。我有下面的on change 方法

 1      $("input#item_IsHere").on("change",
 2          function () 
 3              var index = $(this).data("index");
 4              var checked = $(this).checked === true ? 1 : 0;
 5
 6              console.log("on change: " + $(this).checked);
 7              //...
 8          );

当我点击复选框时,更改方法会触发,index 会按照我的预期设置。没想到$(this)checked 属性是未定义的。

我也为此尝试过小提琴,但小提琴奏效了:/

我在 Chrome 和 Firefox 中看到了这一点。当页面加载时,我看到复选框并调出开发人员工具调试器。在调试器中,我在console.log (lise 6) 上设置了一个断点。当我单击复选框时,它会运行到断点并等待。我可以将鼠标悬停在第一个 $(this)(第 3 行)上,我可以看到在这种情况下 checked 属性设置为 true

问题在于var checked 的值最终为0,而​​console.log 的结果为

    on change: undefined

哦,我也把第 4 行的三元运算符做了

    var checked = $(this).checked ? 1 : 0;
and
    var checked = $(this).is(":checked") ? 1 : 0;
and
    if ($(this).checked) 
        checked = 1;
     else 
        checked = 0;
    

结果相同。

我没看到什么?

【问题讨论】:

jQuery 中没有函数checked。改用这个$(this).is(':checked') 【参考方案1】:

你应该使用$("input").is(":checked")

var checked = $("input:eq(0)").is(":checked") ? 1 : 0;

console.log(checked);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input type="checkbox" checked />

【讨论】:

叹息,我在发布问题之前尝试了.is(":checked") ,但它失败了......我刚刚再次运行它并且它有效。谢谢大家。 没问题,请将此问题标记为已回答 是的,可以,但它已被标记为重复。还是谢谢你。

以上是关于jquery复选框选中的属性和三元运算符[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用jquery ajax检查或不检查复选框[重复]

jQuery复选框 全选反选取消&三元运算

获取复选框jquery的当前状态[重复]

在winform中如何获取两个单选框中选中的那个值

jQuery - 根据 attr 值仅获取选中复选框的唯一值

jQuery实现复选框的全选与全不选