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

Ben*_*Lee 4 jquery attributes jquery-attributes

在jQuery中,为什么这样:

$('<div open="whatever">').attr('open')
Run Code Online (Sandbox Code Playgroud)

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

$('<div asdf="whatever">').attr('asdf')
Run Code Online (Sandbox Code Playgroud)

评估'whatever'为预期.

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

Gre*_*tit 5

open实际上是HTML5有效属性,它应该是一个布尔值.如果是这种情况,我怀疑如果你有"开放"设置,浏览器会将其评估为真,并返回它是"开放".

我更好奇地知道为什么它会"开放"而不是"真实".可能是由于各种浏览器的实现不完整.他们可能以这种或那种方式将该属性放在一边以备后用.

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

  • 这不是HTML如何对待布尔值?`checked ="checked"`等? (2认同)