我正在使用以下小部件 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的属性(如果在页面加载之前检查),但是当我尝试单击复选框以添加属性时(如果未在页面加载时检查),则没有任何反应。
感谢您提供任何帮助,并对我糟糕的编码感到抱歉。
答案 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)