Compte tenu de l'arbitraire d'un élément HTML avec zéro ou plus data-*
attributs, comment peut-on récupérer une liste de paires clé-valeur pour les données.
E. g. compte tenu de ceci:
<div id='prod' data-id='10' data-cat='toy' data-cid='42'>blah</div>
Je voudrais être en mesure de récupérer par programme ce:
{ "id":10, "cat":"toy", "cid":42 }
À l'aide de jQuery (v1.4.3), l'accès à la personne de bits de données à l'aide d' $.data()
est simple, si les touches sont connus à l'avance, mais il n'est pas évident de savoir comment on peut le faire avec de l'arbitraire des ensembles de données.
Je suis à la recherche d'une 'simple' jQuery solution s'il en existe, mais ne serait pas l'esprit d'un niveau inférieur à aborder autrement. J'ai eu un aller à essayer d'analyser $('#prod').attributes
mais mon manque de javascript-fu est de me laisser descendre.
mise à jour
customdata fait ce dont j'ai besoin. Cependant, y compris un plugin jQuery juste pour une fraction de sa fonctionnalité semblait exagéré.
Eyeballing la source m'a aidé à résoudre mon propre code (et amélioré mon javascript-fu).
Voici la solution que j'ai trouvé:
function getDataAttributes(node) {
var d = {},
re_dataAttr = /^data\-(.+)$/;
$.each(node.get(0).attributes, function(index, attr) {
if (re_dataAttr.test(attr.nodeName)) {
var key = attr.nodeName.match(re_dataAttr)[1];
d[key] = attr.nodeValue;
}
});
return d;
}
mise à jour 2
Comme l'a démontré accepté de répondre, la solution est triviale avec jQuery (>=1.4.4). $(#prod).data()
serait de retour les données requises, dict. Merci beaucoup pour toute l'aide que.