Jquery HTML中布尔属性(例如复选框)的语法是什么?

Jquery HTML中布尔属性(例如复选框)的语法是什么?,jquery,html,checkbox,Jquery,Html,Checkbox,听起来有点傻,但我想知道,在HTML中复选框被选中/取消选中的最佳方式是什么 我看到了许多不同的例子: <input type="checkbox" checked="checked" /> <input type="checkbox" /> <input type="checkbox" checked="yes" /> <input type="checkbox" checked="no" /> <input type="checkb

听起来有点傻,但我想知道,在HTML中复选框被选中/取消选中的最佳方式是什么

我看到了许多不同的例子:

<input type="checkbox" checked="checked" />
<input type="checkbox"  />

<input type="checkbox" checked="yes" />
<input type="checkbox" checked="no" />

<input type="checkbox" checked="true" />
<input type="checkbox" checked="false" />

哪些浏览器可以使用这些浏览器中的哪一个,最重要的是,jQuery是否能够确定在所有3个浏览器中选中了哪个框

编辑: W3C规范似乎暗示,只有存在的选中属性才是正确的。这是否意味着checked=“false”和checked=“no”仍将选中该框?

HTML:

他们中的任何一个都应该是正确的<代码>已选中只需设置属性即可

正如我在科罗纳图斯的评论中所写:


事实上,如果它是 选中,选中=“无论什么”或 checked=“checked”。正在检查 布尔值,所以它不是真的 (设置)或false(未设置)

XHTML:

您必须指定它,因此只有
checked=“checked”
是有效的。大多数浏览器可能会正确解析HTML值,但您的页面上仍然会有错误。

根据您的第一个建议是正确的。

存在“checked”属性指定状态。该值不相关/不需要

<input type="checkbox" checked="checked" />
<input type="checkbox"  />

我的建议是HTML格式的

<input type="checkbox" checked>
<input type="checkbox" checked="checked">

对于XHTML,必须使用属性/值匹配对:

<input type="checkbox" checked="checked" />

根据,正确的是:

<input type="checkbox" checked />
<input type="checkbox" />


我使用这个函数,jQuery可以很好地与它们配合使用。

快速测试表明,jQuery等同于任何要检查的值集

alert( $('input:checked').length );
// Returns 5

即使是一个空字符串和负值。

在chrome、firefox和opera上使用它,我也会小心。Chorme似乎在显示复选框方面有问题,Firefox对样式和标记区分大小写,opera似乎运行良好,但更新缓慢。可能只是正在使用的浏览器版本

除此之外,我相信它应该在所有这些方面都运行良好。唯一的区别实际上是各个浏览器在页面上显示内容的方式

W3C规范似乎暗示,只有存在的选中属性才是正确的。这是否意味着checked=“false”和checked=“no”仍将选中该框


没错。这就是为什么使用
checked=“true”
checked=“yes”
是个坏主意,它们意味着
checked=“false”
checked=“no”
将不勾选该框。

HTML5规范

<tag boolean />
<tag boolean="" />
<tag boolean="boolean" />
<tag boolean="BoOlEaN" />
<tag boolean="0" />
<tag boolean="1" />
<tag boolean="false" />
<tag boolean="true" />
<tag />
:

元素上存在布尔属性表示真值,不存在该属性表示假值

如果属性存在,则其值必须是空字符串或与属性规范名称不区分大小写的ASCII匹配值,且不带前导或尾随空格

结论

<tag boolean />
<tag boolean="" />
<tag boolean="boolean" />
<tag boolean="BoOlEaN" />
<tag boolean="0" />
<tag boolean="1" />
<tag boolean="false" />
<tag boolean="true" />
<tag />

boolean
成为tag
tag
的一个布尔属性,就像
checked
实际上,它是否被选中、checked=“whatever”或checked=“checked”并不重要。它正在检查布尔值,因此它要么为真(设置),要么为假(未设置)。该值很重要-它只能被“检查”(浏览器只是针对垃圾进行错误更正。不要依赖错误恢复,而是编写无错误代码)。如果您正在编写HTML(与XHTML相反),您可以(并且应该)省略名称(以及等号和引号),只留下值。(布尔属性很奇怪。)正如您在文章的代码中看到的,我并不是说值不应该存在。我只是说,您可以编写checked=“hello”或checked=“maybe”并仍然获得所需的结果。但您是对的,我们应该针对XHTML,而不仅仅是HTML。
checked=”“
也是有效的。附加阅读材料:此设计背后的想法是否可能重复?这似乎违反直觉,我想不出比仅仅使用布尔值有什么优势。例如,我正在使用一个不支持这种表示法的渲染引擎(VisualForce/Salesforce)。@NSjonas Nope!:-)也许是因为我不想写?