HTML复选框的区别'已检查' IE和Chrome中的属性/属性

时间:2014-02-06 21:24:34

标签: html internet-explorer google-chrome

参见JSFiddle

http://jsfiddle.net/gK6kX/11/有以下几行:

$("input#aaa")[0].checked = false;
$("input#aaa")[0].setAttribute('checked', false);

在Chrome上检查第三个框,但不检查IE(IE9)。

我理解为什么在Chrome上检查 - checked =“false”表示仍然选中该框。

理解为什么未在IE上进行检查。

看起来好像第一行(DOM对象上的checked = false和setAttribute)在IE上有所不同,但不是Chrome。

这第一行有什么作用?为什么有人会使用这两行而不只是setAttribute

1 个答案:

答案 0 :(得分:1)

如果您正在使用jQuery,请使用$.attr()设置初始检查状态。事后使用$.prop()更改属性。因此,如果您有一个已加载且已经选中的复选框,请执行以下操作取消选中它:

$("input#aaa")[0].prop('checked', true); // set checked
$("input#aaa")[0].prop('checked', false); // uncheck

请注意,如果元素上存在checked属性,无论其值如何,则应考虑选中复选框的初始状态。这是according to the W3C。因此,如果您在复选框上显示checked="false",则仍将选中checked属性仅通过defaultChecked属性设置复选框的初始状态。要更改此后复选框的状态,您需要修改checked属性(该属性不再重要)。

这样做在技术上用于设置复选框的初始状态:

$("input#aaa")[0].attr('checked', 'checked'); // initial state is checked

同样,如果要在创建复选框后更改选中状态,请使用$.prop()

参考(我建议完整阅读两页):