2014-02-06 54 views
1

见的jsfiddle差异HTML复选框 '检查' 属性/属性的IE和铬

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

我相信你会在这里遇到了一个错误。 JSFiddle上的JQuery 1.10.1似乎不适用于IE。你能否通过在其后面添加警报来确认代码是否正在执行?如果不是,请尝试另一个jQuery版本。它应该在IE中表现相同,正如您注意到静态版本那样。 –

+0

这可能是它。使用不同的jQuery版本,我在IE和Chrome中获得了相同的结果。 – wrschneider

+0

更新的问题 - 真正的问题是关于检查的属性与检查的属性 – wrschneider

回答

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()

参考(我建议您阅读的全部两个页面):

+0

不回答我的问题 - 询问关于给定代码的浏览器之间的具体差异 – wrschneider

+0

@ wrschneider99'setAttribute'用于设置属性'checked',因此属性'defaultChecked' - 此属性用于复选框的初始状态。如果您想在此之后修改状态,则应该更改'checked'属性,而不是属性。 – matthewpavkov

+0

@ wrschneider99好吧,现在我看到你的问题。 – matthewpavkov