30

我想使用自定义布尔属性将元素的内容标记为可编辑。我知道这些data-*属性,但不确定它们是否需要一个值。我不需要data-is_editable="false",因为缺少该属性将是等效的。我只关心它是否“真实”(如果属性存在)。我知道我可以使用其他属性,class但我不想这样做,因为它似乎有点不合适(如果我错了,请纠正我)。

这是我正在阅读的资源,可能是错误的文档,或者我忽略了我正在寻找的信息:http: //www.w3.org/html/wg/drafts/html/master/dom.html#自定义数据属性

例如,这是否合法有效?

<div data-editable data-draggable> My content </div>
4

2 回答 2

23

您显示的示例是有效的。(就像在表单中使用disabledor一样checked。只xHTML强制存在一个值)

虽然,返回的值不是布尔值。当您查询此资源时,您将获得任何空data-*属性的空字符串。

像这样:

 domNode.dataset.draggable; // log ""
 domNode.dataset.notAdded; // log null

所以,你只需要检查它:

var isDraggable = (domNode.dataset.draggable != null)

编辑

之前不告诉你是愚蠢的。但是,如果你想要一个布尔值,你可以检查属性是否存在:

domNode.hasAttribute("data-draggable");
于 2013-05-31T20:10:26.120 回答
7

它通过了W3.org 验证器,这是一个好兆头。

Javascriptdataset和 jQuery 的data函数似乎知道那里的属性或缺少的属性之间的区别——但是当它存在时,该值是一个空字符串,而当它不存在时,它要么是未定义的,要么是空的。为避免混淆,我认为我不会亲自使用它——我可能会改为选择<div data-editable="1"></div>

于 2013-05-31T20:10:40.803 回答