在 jQuery 中,为什么会这样:
$('<div open="whatever">').attr('open')
总是评估为'open'
而不是'whatever'
?相比之下,这:
$('<div asdf="whatever">').attr('asdf')
评估'whatever'
为预期。
open
是的,我知道这asdf
不是有效的 HTML 属性;我不是在寻找类似于“仅使用data-open
”等内容的答案......我正在寻找对上述行为的解释。
在 jQuery 中,为什么会这样:
$('<div open="whatever">').attr('open')
总是评估为'open'
而不是'whatever'
?相比之下,这:
$('<div asdf="whatever">').attr('asdf')
评估'whatever'
为预期。
open
是的,我知道这asdf
不是有效的 HTML 属性;我不是在寻找类似于“仅使用data-open
”等内容的答案......我正在寻找对上述行为的解释。
open
实际上是HTML5 的一个有效属性,它应该是一个布尔值。如果是这种情况,我怀疑如果您完全设置了“打开”,浏览器会将其评估为 true 并返回它是“打开的”。
我会更想知道为什么它返回“开放”而不是“真实”。可能是由于各种浏览器中的实现不完整。他们可能以一种或另一种方式将该属性放在一边以备后用。
[附录:根据评论,这似乎是 HTML 处理布尔值的方式]
做了一些测试,出于某种原因,这似乎有效:
document.getElementById('myID').getAttribute('open');
虽然 jQuery 不适用于 .prop() 或 .attr()
真的很奇怪吗?