我有一个没有正确拾取复选框的功能(如果选中) 有了这个功能:
function playerJson() {
players = [];
$('input[name=playerCheckList]').each(function () {
if ($(this).checked) {
players.push($(this).val());
}
});
return $.toJSON(players);
}
我使用此功能检查所有按钮(正确)
$(function () {
$("#checkAllPlayers").click(function () {
$('input[name=playerCheckList]').each(function () {
$(this).prop('checked', true);
});
});
});
如果我没有if语句:
if($(this).checked)
从第一段代码中,它正确地获取所有值(已检查或未检查)
所以,这个陈述可能是个问题,但我不确定原因。
由于
答案 0 :(得分:9)
这是指一个jQuery对象,它没有'checked'属性(但DOM会拥有该属性)。您需要获取属性值。
$(this).prop("checked");
修改:我支持qwertynl's answer,因为vanilla.js
答案 1 :(得分:5)
$(this).checked
不起作用,因为$(this)
是一个jQuery对象。只需查看DOM对象的checked
属性(this
):
...
if (this.checked) {
players.push(this.value);
}
...
答案 2 :(得分:3)
正如其他答案所说,.checked
不适用于jQuery对象。
通过这种方式更容易看到:
$(this).checked
返回undefined / error,因为它是一个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);
}