我有一个功能,没有使用此功能正确拾取复选框(如果选中):
function playerJson() {
players = [];
$('input[name=playerCheckList]').each(function () {
if ($(this).checked) {
players.push($(this).val());
}
});
return $.toJSON(players);
}
Run Code Online (Sandbox Code Playgroud)
我用这个功能检查所有按钮(正确)
$(function () {
$("#checkAllPlayers").click(function () {
$('input[name=playerCheckList]').each(function () {
$(this).prop('checked', true);
});
});
});
Run Code Online (Sandbox Code Playgroud)
如果我没有if语句:
if($(this).checked)
从第一段代码中,它正确地获取所有值(已检查或未检查)
所以,这个陈述可能是问题所在,但我不确定为什么.
谢谢
这是指一个jQuery对象,它没有'checked'属性(虽然DOM会拥有该属性).您需要获取属性值.
$(this).prop("checked");
Run Code Online (Sandbox Code Playgroud)
编辑:我支持qwertynl的答案,因为vanilla.js
小智 6
正如其他答案所说,.checked不适用于 jQuery 对象。
这样更容易可视化:
$(this).checked返回未定义/错误,因为它是 jQuery 对象,而不是元素。
$(this)[0].checked返回 的值,checked因为您引用的是元素本身,而不是引用该元素的 jQuery 对象。
下面是脚本的修改和修复版本,完全消除了 jQuery 的使用checked,因为value它们对 jQuery 的使用毫无意义。另一种用法更有意义,因此它将保留在我的答案中。
function playerJson() {
players = [];
$('input[name=playerCheckList]').each(function () {
if (this.checked) {
players.push(this.value);
}
});
return $.toJSON(players);
}
Run Code Online (Sandbox Code Playgroud)
$(this).checked不起作用,因为$(this)是一个jQuery对象.
只需查看checkedDOM对象的属性(this):
...
if (this.checked) {
players.push(this.value);
}
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12505 次 |
| 最近记录: |