通过jQuery添加checked属性

时间:2010-09-14 16:43:38

标签: jquery attributes add checked

我正在使用以下小部件 http://www.erichynds.com/examples/jquery-ui-multiselect-widget/demos/ 它到目前为止工作得很好,但我需要一些帮助来添加属性。在使用Firebug时,我注意到只需单击复选框,checked属性就不会像我期望的那样出现。在我的代码中,我修改了小部件,我已经能够添加代码来删除checked的属性。

this.removeAttribute(\'checked\'); this.checked=false;

如果事先检查了该项目。我已成功使用此代码

this.setAttribute(\'checked\', \'checked\'); this.checked=true; 

如果在页面加载时取消选中该项目。

当我需要能够在复选框上使用这两组代码时,我的问题就出现了,我尝试了以下内容

onclick="if($(this).attr(\'checked\') == \'true\') { this.setAttribute(\'checked\', \'checked\'); this.checked=true; } else { this.removeAttribute(\'checked\'); this.checked=false; }

代码将删除checked的属性(如果在页面加载之前检查),但是当我尝试单击复选框以添加属性时(如果未在页面加载时检查),则没有任何反应。

感谢您提供任何帮助,并对我糟糕的编码感到抱歉。

4 个答案:

答案 0 :(得分:14)

在jQuery中删除属性使用

this.removeAttr('checked');

并设置属性使用

this.attr('checked', 'checked');

答案 1 :(得分:2)

  

我注意到,只需单击复选框,就不会出现选中的属性

这是绝对正确的。 checked属性对应于输入的当前检查;它实际上对应于HTML文档的初始检查,如果表单被重置,则将恢复检查。

IE添加属性因为IE错误。 IE中已经破坏了getAttribute / setAttribute - 从不在HTML文档中使用它们! - 它们实际上设置了属性,而不是属性。

这是defaultChecked属性。但是你为什么要设置checked属性?几乎没有充分的理由。通常情况下,普通的checked属性就是你要找的东西。

答案 2 :(得分:1)

  

在使用Firebug时,我注意到只需单击复选框,check属性就不会像我期望的那样出现。

为什么你需要checked属性? checked属性提供了您通常需要的所有功能,即选中此框会将element.checked设置为true,反之亦然,即修改element.checked将更改状态盒子。

答案 3 :(得分:1)

$(this).prop('checked',false)

$(this).prop('checked',true)