参见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
?
答案 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()
。
参考(我建议完整阅读两页):