在jQuery中,为什么会这样:
$('<div open="whatever">').attr('open')
始终评估为'open'
而不是'whatever'
?相比之下,这个:
$('<div asdf="whatever">').attr('asdf')
按预期评估'whatever'
。
是的,我知道open
和asdf
不是有效的HTML属性;我不是在寻找那些说“只是使用data-open
”等等的答案......我正在寻找上述行为的解释。
答案 0 :(得分:5)
open
实际上是一个valid attribute for HTML5,它的意思是布尔值。如果是这种情况,我怀疑如果你有“开放”设置,浏览器会将其评估为真,并返回它是“开放”。
我更想知道为什么它会“开放”而不是“真实”。可能是由于各种浏览器的实现不完整。他们可能会以某种方式将该属性放在一边以备日后使用。
[附录:根据评论,这似乎是HTML对待布尔的方式]
答案 1 :(得分:0)
进行了一些测试,并且出于某种原因,这似乎有效:
document.getElementById('myID').getAttribute('open');
虽然jQuery不适用于.prop()或.attr()
确实很奇怪?