9
votes

Mise à jour correctement l'attribut de données HTML, mais les modifications ne sont pas affichées à la page

J'ai ce HTML:

$(function() {
    $('#query').data('source', 'test');
    console.log($('#query').data());
});


1 commentaires

5 Réponses :


0
votes

Dans votre violon, vous avez ce code.

$(function() {
    $('#query').data('source', 'test');
    console.log($('#query').data());
});


0 commentaires

10
votes

Les données ne sont pas stockées sur l'élément (utilisez ATTR ou PROP pour cela). Au lieu de cela, JQuery le maintient en $ .Cache.


1 commentaires

$ ('# Query'). Données () donne la carte de tous les attributs de données stockés avec l'élément Jetez un look ici jsfiddle.net/r5yv9/10 . Vous n'êtes pas obligé d'utiliser prop ou attr pour y accéder.



1
votes

Si vous faites quelque chose de fou comme à l'aide de l'attribut Data pour appliquer le style (non, ce n'est pas vraiment fou), vous avez besoin du cache de JQuery's et le DOM à mettre à jour.

Swaper Out Le jQuery xxx

qui ne mettra pas à jour le DOM à une méthode qui fait à la fois xxx

note: J'ai toujours mis $ devant les variables de JQuery, au cas où n'importe qui est confondu à ce sujet. ;)


0 commentaires

0
votes

Reportez-vous à la documentation JQuery sur Data () Code> S'il vous plaît et vous verrez là-bas:

Utilisation de la méthode Data () pour mettre à jour les données n'affecte pas les attributs dans le dom. Pour définir une valeur d'attribut de données *, utilisez attr. P> blockQuote>

Donc, vous devez utiliser P>

$('#query').attr('data-source', 'test');


0 commentaires

0
votes

Les données jQuery () stockent les informations dans les données de fonction définies localement. Alors que jQuery attr () stocke les informations directement sur l'élément dans les attributs publiquement visibles sur inspection.

Ainsi, lorsque vous utilisez JQuery Data () , les données ne sont pas accessibles de l'extérieur de JQuery directement et ne seront pas visibles lors de l'inspection.


0 commentaires