你可以使用data-*
属性为布尔属性?如果没有,是否有其他选择?布尔数据 - *属性
例如,你可以有
<input disabled>
这将是在某些情况下有
<input data-on>
使用data-on="true"
或data-on=""
有用是不可取的 - 属性的存在应指示它的布尔值。
你可以使用data-*
属性为布尔属性?如果没有,是否有其他选择?布尔数据 - *属性
例如,你可以有
<input disabled>
这将是在某些情况下有
<input data-on>
使用data-on="true"
或data-on=""
有用是不可取的 - 属性的存在应指示它的布尔值。
你的确可以使用data-*
属性仿佛他们是布尔属性 - 然而,就dataset
而言<input data-on>
等同的<input data-on="">
。这意味着,不像required
或其他布尔属性,你将不能够做到这一点:
<input class="some-class" data-on required>
var elementOfInterest = document.querySelector(".some-class");
if (elementOfInterest.dataset.on) {
// We will never get here because dataset.on === ""
// and "" == false
}
if (elementOfInterest.required) {
// We *do* get here because required is a boolean attribute
}
相反,你需要做对不确定的一个明确的检查:
if (elementOfInterest.dataset.on !== undefined) {
// We will get here because "" !== undefined
}
这给你不data-on
和data-on=""
区分的方式,但如果你把它当作一个布尔属性,它们都加起来同样的事情反正(仅缺席属性的指示虚假。)
是,data-*
属性可以作为布尔属性,至少尽可能的DOM和浏览器选择的发动机而言:http://jsfiddle.net/MhJNb/
我还没有完成兼容性测试,而Chrome与应用div[data-on]
规则没有问题<div data-on></div>
。
本质'数据on'是' data-on =“”',u 。jQuery的歌唱,你可以简单地做'$( “输入”)为( “[数据上]”);' – FabianCook
注:VAR T =使用document.createElement( “输入”); t.disabled = true; t.outerHTML == '<输入禁用= “”>'; 所以我会说没有,但您可以采用不同的序列比HTML浏览器... – dandavis
的* *存在的属性应该指示其布尔值的!'typeof运算element.dataset.on ==“undefined''。 – dfsq