web-dev-qa-db-fra.com

Comment puis-je obtenir une valeur de données HTML sous forme de chaîne avec jQuery?

J'ai le code suivant dans mon code source HTML:

<li><a href="#" data-value="01">Test</a></li>

Je souhaite obtenir la valeur de l'attribut data afin d'utiliser les éléments suivants:

var abc = $(this).data('value');

Cela fonctionne bien MAIS pas s'il y a un zéro non significatif. Par exemple, ce qui précède A placé la valeur "1" dans abc. 

Y a-t-il un moyen de ne pas convertir le "01" en "1"?

22
this.dataset.value;

// Or old school
this.getAttribute('data-value');

const a = document.querySelector("a");
console.log('Using getAttribute, old school: ', a.getAttribute('data-value'));
console.log('Using dataset, conforms to data attributes: ', a.dataset.value);
<ul>
  <li><a href="#" data-value="01">Test</a></li>
</ul>

Merci à @MaksymMelnyk pour le heads-up sur dataset

42
Juan Mendes

Vous pouvez utiliser l'opérateur attr () de jQuery:

var abc = $(this).attr('data-value');
15
joeschmidt45

Dans la documentation jQuery data () , il apparaît que vous devez utiliser .attr () pour empêcher la conversion de type automatique:

Toutes les tentatives sont faites pour convertir la chaîne en une valeur JavaScript (ceci inclut les booléens, les nombres, les objets, les tableaux et null), sinon, elle est laissée sous forme de chaîne. Pour récupérer l'attribut de la valeur sous forme de chaîne sans chercher à la convertir, utilisez la méthode attr (). Lorsque l'attribut de données est un objet (commençant par '{') ou un tableau (commençant par '[')), jQuery.parseJSON est utilisé pour analyser la chaîne; il doit respecter une syntaxe JSON valide, y compris les noms de propriété cités. Les attributs de données sont extraits lors du premier accès à la propriété de données, puis ne sont plus accessibles ni mutés (toutes les valeurs de données sont ensuite stockées en interne dans jQuery).

Ainsi, non pas pour dupliquer d'autres réponses, mais pour renforcer, le moyen d'accéder à l'attribut sans faire de conversion de type est:

var abc = $(this).attr('data-value');
12
Mike
$(this).attr('data-value');

Cela renverra la valeur de chaîne avec le 0 au début.

4

as-tu essayé?:

$(this).attr('data-value');

ou

$(this).attr('data-value').toString();
2
Josh Siok

Essayez:

this.data('value');

Je pense que c'est le meilleur moyen d'obtenir la valeur d'attribut de données.

1
Shailesh Singh