你可以使用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