Могу ли я использовать атрибуты данных 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>
.