Selon the dataset spec, comment element.dataset est-il prévu de supprimer des attributs de données? Considérez:Comment supprimer les attributs data- * à l'aide du jeu de données HTML5
<p id="example" data-a="string a" data-b="string b"></p>
Si vous faites ceci:
var elem = document.querySelector('#example');
elem.dataset.a = null;
elem.dataset.b = undefined;
elem.dataset.c = false;
elem.dataset.d = 3;
elem.dataset.e = [1, 2, 3];
elem.dataset.f = {prop: 'value'};
elem.dataset.g = JSON.stringify({prop: 'value'});
DOM devient ceci dans Chrome et Firefox:
<p id="example"
data-a="null"
data-b="undefined"
data-c="false"
data-d="3"
data-e="1,2,3"
data.f="[object Object]"
data.g="{"prop":"value"}"
></p>
La mise en œuvre Chrome/Firefox imitateurs setAttribute. Il s'applique d'abord .toString()
en premier. Cela a du sens pour moi, sauf pour le traitement de null
parce que je m'attendrais à ce que null
supprime l'attribut. Sinon, comment l'API de jeu de données ne soit l'équivalent de:
elem.removeAttribute('data-a');
Et sur les attributs booléens:
<p data-something>
est équivalent à <p data-something="">
Hmm.
'supprimer des œuvres elem.dataset.foo'! – ryanve
Remarque: 'delete v.dataset.foo;' ne fonctionnera pas dans Safari. Une solution de navigateur croisé serait; 'v.removeAttribute ('data-foo')' –
@maximdim, pouvez-vous s'il vous plaît mettre à jour votre réponse pour inclure le commentaire de Jeremy? Même dans Safari 10, c'est toujours un problème. Safari 11 corrige ceci (vérifié avec Safari Technical Preview) – Dogoku