154 votes

Sont vides HTML5 attributs de données valide?

Je voudrais écrire un simple plugin jQuery qui affiche inline modaux dans des éléments. Mon idée est pour le script d'auto-init basée sur des données d'attributs sur les éléments.

Un exemple très simple:

<p data-modal-target>Hover over me for an inline modal!</p>
<div data-modal-content data-modal-align="right" data-modal-trigger="hover" data-modal-offset="10px"><!-- any desired syntax can go here --></div>

Je me demandais simplement si data-modal-target dans l'exemple ci-dessus est valide, ou faut-il avoir pour être data-modal-target="true"? Je n'ai pas à vous soucier de rien crappier que IE9 etc, ma seule exigence est qu'il soit valide HTML5.

119voto

Lloyd Points 3597

Oui, parfaitement valide.. dans votre cas, data-modal-target représenterait un attribut booléen

La présence d'un attribut booléen sur un élément représente le vrai valeur, et l'absence de l'attribut représente la valeur false.

voir ici: http://www.w3.org/html/wg/drafts/html/master/infrastructure.html#boolean-attributes

95voto

user Points 1438

Attributs de données personnalisés spécification ne pas mentionner les changements d'attributs vides de manutention, de sorte que des règles générales concernant les attributs vides s'appliquer ici:

Certains attributs peuvent être spécifiée en fournissant simplement le nom de l'attribut, sans valeur.

Dans l'exemple suivant, l' disabled attribut est donné avec le vide de la syntaxe d'attribut:

<input disabled>

Notez que l'attribut vide syntaxe est exactement équivalente à la spécification de la chaîne vide comme valeur pour l'attribut, comme dans l'exemple suivant.

<input disabled="">

Si vous êtes autorisé à utiliser vide attributs de données personnalisés, mais une manipulation spéciale nécessaire pour les utiliser comme valeur de type boolean.

Si vous accédez par le biais de l'attribut element.dataset:

  • Lorsqu'un attribut vide est présent, sa valeur est "".
  • Lorsqu'un attribut est absent, vous avez undefined.

Par conséquent, vous ne pouvez pas il suffit de vérifier que if (element.dataset.myattr) car il sera toujours false.

Vous pouvez et devriez vérifier les attributs booléens comme if (element.dataset.myattr !== undefined).


Lloyd réponse est incorrecte. Il mentionne lien d'attributs booléens microsyntax, mais data-* attributs ne sont pas spécifiés comme booléenne dans spec.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X