为什么jQuery总是为$ .attr('open')返回'open',而不管属性的实际值是多少?

时间:2012-03-01 22:40:06

标签: jquery attributes jquery-attributes

在jQuery中,为什么会这样:

$('<div open="whatever">').attr('open')

始终评估为'open'而不是'whatever'?相比之下,这个:

$('<div asdf="whatever">').attr('asdf')

按预期评估'whatever'

是的,我知道openasdf不是有效的HTML属性;我不是在寻找那些说“只是使用data-open”等等的答案......我正在寻找上述行为的解释。

2 个答案:

答案 0 :(得分:5)

open实际上是一个valid attribute for HTML5,它的意思是布尔值。如果是这种情况,我怀疑如果你有“开放”设置,浏览器会将其评估为真,并返回它是“开放”。

我更想知道为什么它会“开放”而不是“真实”。可能是由于各种浏览器的实现不完整。他们可能会以某种方式将该属性放在一边以备日后使用。

[附录:根据评论,这似乎是HTML对待布尔的方式]

答案 1 :(得分:0)

进行了一些测试,并且出于某种原因,这似乎有效:

document.getElementById('myID').getAttribute('open');

虽然jQuery不适用于.prop()或.attr()

确实很奇怪?

FIDDLE