4

在 jQuery 中,为什么会这样:

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

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

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

评估'whatever'为预期。

open是的,我知道这asdf不是有效的 HTML 属性;我不是在寻找类似于“仅使用data-open”等内容的答案......我正在寻找对上述行为的解释。

4

2 回答 2

5

open实际上是HTML5 的一个有效属性,它应该是一个布尔值。如果是这种情况,我怀疑如果您完全设置了“打开”,浏览器会将其评估为 true 并返回它是“打开的”。

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

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

于 2012-03-01T22:44:59.317 回答
0

做了一些测试,出于某种原因,这似乎有效:

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

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

真的很奇怪吗?

小提琴

于 2012-03-01T22:59:04.153 回答