Existe-t-il une méthode native, sans JQuery, pour vérifier si un élément dom a l’atsortingbut avec la valeur sélectionnée par exemple: // suppose que doc a data-mod = “do” défini
ce sera vrai
document.hasAtsortingbute('data-mod');
mais ce sera faux
document.hasAtsortingbute('data-mod="do"')
existe-t-il un moyen de rechercher en mode natif un atsortingbut de données sur un élément DOM avec la valeur?
Vous devez accéder à la valeur de l’atsortingbut via getAtsortingbute
et la comparer à la chaîne attendue:
if (node.getAtsortingbute('data-mod') === 'do') { ... }
Pour les navigateurs modernes, vous pouvez utiliser des matches
:
if (node.matches('[data-mod="do"]')) { ... }
… Ou pour les atsortingbuts [data-*]
vous pouvez utiliser dataset
:
if (node.dataset.mod === 'do') { ... }
Vous pouvez le faire correctement avec dataset
,
if (elementNode.dataset['mod'] == 'do') { //your code goes here. }
En utilisant dataset
vous pouvez accéder facilement aux atsortingbuts de données d’un élément.
Oui, ça y est:
var selector = document.getElementsByTagName("H1")[0]; //Exemple of a h1 if (selector.getAtsortingbute('data-mod') == "do"){ //Do your logic }
Cela peut fonctionner …
var list = document.querySelectorAll('[data-mod="do"]');
Vous pouvez utiliser Element.atsortingbutes
function data(el, dataName, dataValue) { for (var i = 0; i < el.attributes.length; i++) { if (/^(data)(?=-\w+|=[^=]*$|=$|$)/g.test(el.attributes[i].name)) { if (dataName && el.attributes[i].name === "data-" + dataName) { if (dataName && dataValue && el.attributes[i].name === "data-" + dataName && el.attributes[i].value === dataValue) { return true } return true } else { return true } } } return false } var elems = document.querySelectorAll("div"); for (var i = 0; i < elems.length; i++) { console.log(data(elems[i])) } var _name = "prop", _value = "123"; console.log("element #" + elems[1].id +" has `data-*` attribute name:" +_name +", value:"+_value , data(elems[1], _name, _value))
abc 123 no data