JQuery正在更改复选框值,但复选框未显示为已选中

Gau*_*rav 34 html javascript checkbox jquery

我有一个带有复选框和一些文本的列表(如电子邮件的收件箱).当我单击列表项(行)上的任意位置时,我想检查/取消选中该复选框.我在行的click事件上使用了以下代码:

$(this).find(".cbx input").attr('checked', true);
Run Code Online (Sandbox Code Playgroud)

这是第一次显示选中的复选框.但是当我点击下一次选中它时,复选框的值="已检查"html代码中的更新(我通过firebug检查),但复选框未显示为已选中.

Uwe*_*weB 89

随着.attr()你设置的DOM树属性的值.根据浏览器,浏览器版本和jQuery版本(尤其是1.6),这并不总是具有所需的效果.

使用.prop(),你操纵属性(在这种情况下,'检查状态').我强烈建议您使用.prop(),因此以下内容将正确切换:

$(this).find(".cbx input").prop('checked', true);
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅.prop()文档.


Rob*_*ert 8

几乎是正确的,只需使用'checked'而不是true:

$(this).find(".cbx input").attr('checked', 'checked');
Run Code Online (Sandbox Code Playgroud)

更新:或者,您可以在较新的JQuery版本中使用它:

$(this).find(".cbx input").prop('checked', true);
Run Code Online (Sandbox Code Playgroud)