【发布时间】: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')。
标签: javascript jquery checkbox properties ternary-operator