Могу ли я использовать атрибуты данных HTML5 как атрибуты boolean?

Я хочу использовать собственный атрибут boolean для обозначения содержимого элемента как редактируемого. Я знаю атрибуты data-*, но не был уверен, что они требуют значения. Мне не нужно data-is_editable="false", так как отсутствие атрибута будет эквивалентным. Мне все равно, если это "правда" (если атрибут существует). Я знаю, что могу использовать другие атрибуты, такие как class, но я не хочу, поскольку это кажется немного неуместным (исправьте меня, если я ошибаюсь в этом).

Здесь ресурс, который я читаю, может быть, это неправильный документ, или я забыл информацию, которую я ищу: http://www.w3.org/html/wg/drafts/html/master/dom.html#custom-data-attribute

Так, например, является ли это законным и действительным?

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

Ответ 1

Пример, который вы показываете, действителен. (Точно так же, как использование disabled или checked в форме. Только xHTML принудительное присутствие значения)

Хотя возвращаемое значение не является логическим. Когда вы запрашиваете этот ресурс, вы получите пустую строку для любых пустых атрибутов data-*.

Так же:

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

Итак, вам просто нужно проверить это:

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

Edit

Глупо, если не сказать об этом раньше. Но вы можете просто проверить, существует ли атрибут, если вы хотите логическое:

domNode.hasAttribute("data-draggable");

Ответ 2

Он передает W3.org validator, что является хорошим знаком.

Функции Javascript dataset и jQuery data, похоже, знают разницу между атрибутом или отсутствием - но это значение является пустой строкой, когда оно есть, и либо undefined, либо null, когда это не так. Чтобы избежать путаницы, я не думаю, что я использовал бы это лично - вместо этого я бы предпочел вместо <div data-editable="1"></div>.