11

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

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; }

代码将删除选中的属性(如果在页面加载之前检查过),但是当我尝试单击复选框以添加属性(如果在页面加载时未选中)时,什么也没有发生。

感谢您的帮助,并为我糟糕的编码感到抱歉。

4

4 回答 4

23

在 jQuery 中用于删除属性使用

this.removeAttr('checked');

并设置属性使用

this.attr('checked', 'checked');
于 2010-09-14T17:50:18.037 回答
6
$(this).prop('checked',false)

或者

$(this).prop('checked',true)
于 2018-05-30T20:48:32.847 回答
2

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

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

IE 添加属性是因为 IE 错误。getAttribute/setAttribute在 IE 中被破坏——永远不要在 HTML 文档上使用它们!——它们实际上设置了属性,而不是属性。

这是defaultChecked物业。但是你为什么要设置checked属性?几乎没有充分的理由这样做。checked通常,您要寻找的是普通的旧房产。

于 2010-09-14T16:57:50.440 回答
1

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

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

于 2010-09-14T16:54:52.740 回答