J'aimerais écrire un simple plugin jQuery qui affiche les modaux en ligne sous les éléments spécifiés. Mon idée est que le script s'initialise automatiquement en fonction des attributs de données spécifiés sur les éléments.
Un exemple très basique:
<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 demande simplement si data-modal-target
dans l'exemple ci-dessus est valide, ou doit-il l'être data-modal-target="true"
? Je me fiche de quelque chose de plus merdique que IE9, etc., ma seule exigence est que ce soit du HTML5 valide.
Réponses:
Valide, mais ils ne sont pas booléens.
La spécification des attributs de données personnalisés ne mentionne aucun changement dans la gestion des attributs vides, donc les règles générales sur les attributs vides s'appliquent ici:
Vous êtes donc autorisé à utiliser des attributs de données personnalisés vides, mais une gestion spéciale est nécessaire pour les utiliser comme booléens.
Lorsque vous accédez à un attribut vide, sa valeur est
""
. Puisqu'il s'agit d'une valeur fausse, vous ne pouvez pas simplement l'utiliserif (element.dataset.myattr)
pour vérifier si un attribut est présent.Vous devriez utiliser
element.hasAttribute('myattr')
ou à laif (element.dataset.myattr !== undefined)
place.La réponse de Lloyd est fausse. Il mentionne le lien vers la microsyntaxe des attributs booléens, mais les
data-*
attributs ne sont pas spécifiés comme booléens dans la spécification.la source
scriptAttrs
paramètre de jQuery n'aime pas unedefer
valeur simple , mais adefer: ""
devrait faire l'affaire. Merci!Oui, parfaitement valable. Dans votre cas,
data-modal-target
représenterait un attribut booléen:la source
if ($('p').data('modal-target'))
ne fonctionneront pas: stackoverflow.com/questions/16864999/… .element.dataset.modalTarget
produirait une chaîne vide qui est falsifiée (Chrome 32) même résultat avec jQueryOui, c'est une syntaxe valide pour omettre la valeur d'un attribut de données personnalisé.
"Les attributs peuvent être spécifiés de quatre manières différentes:
Syntaxe d'attribut vide Juste le nom de l'attribut. La valeur est implicitement la chaîne vide. [...] " https://developers.whatwg.org/syntax.html#attributes-0
la source
D'une part, il passe le validateur 16.5.7 https://validator.w3.org/nu/#textarea :
D'autre part, HTML5 ne dit pas dans la spécification des
data-
attributs qu'ils sont booléens: https://www.w3.org/TR/html5/dom.html#custom-data-attribute alors qu'il le dit très clairement pour les autres booléens attributs commechecked
https://www.w3.org/TR/html5/forms.html#attr-input-checkedla source