jquery 复选框已选中 属性 和三元运算符
jquery checkbox checked property and ternary operator
- 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
属性是undefined.
我也为此尝试了 fiddle,但 fiddle 有效:/
我在 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;
}
结果相同
我没看到什么?
你应该使用$("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 />
- 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
属性是undefined.
我也为此尝试了 fiddle,但 fiddle 有效:/
我在 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;
}
结果相同
我没看到什么?
你应该使用$("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 />