$('div').data('info', 1);
alert($('div').data('info'));
//this works
$('div[data-info="1"]').text('222');
//but this don't work
Je crée un élément dans jquery. Après cela, je veux ajouter l'attribut "data". Il est comme et est ajouté, mais dans le DOM, ce n'est pas apparent, et je ne peux pas obtenir l'élément, en utilisant
$('div[data-example="example"]').html()
jquery
html
custom-data-attribute
Luntegg
la source
la source
.data()
sauf si vous avez réellement une raison de l'utiliser.attr()
..data()
ne marche pas. Il n'ajoute pas d'attribut de données au DOM, et je n'obtiens pas élément par attribut de données..data(key, val)
créer l'attr. quelqu'un sait pourquoi il ne le fait pas?Note that this doesn't create an actual data-info attribute. If you need to create the attribute, use .attr():
C'était la clé de mon problème. Merci beaucoup..data () de jQuery fait plusieurs choses mais n'ajoute pas les données au DOM en tant qu'attribut. Lorsque vous l'utilisez pour récupérer un attribut de données, la première chose à faire est de créer un objet de données jQuery et de définir la valeur de l'objet sur l'attribut de données. Après cela, il est essentiellement découplé de l'attribut data.
Exemple:
Si vous saisissez la valeur de l'attribut en utilisant
.data('foo')
, il renverra "bar" comme vous vous en doutez. Si vous modifiez ensuite l'attribut en utilisant.attr('data-foo', 'blah')
, puis utilisez plus tard.data('foo')
pour saisir la valeur, il renverra "bar" même si le DOM ditdata-foo="blah"
. Si vous utilisez.data()
pour définir la valeur, cela changera la valeur dans l'objet jQuery mais pas dans le DOM.Fondamentalement, il
.data()
sert à définir ou à vérifier la valeur de données de l'objet jQuery. Si vous le vérifiez et qu'il n'en a pas déjà un, il crée la valeur basée sur l'attribut de données qui se trouve dans le DOM..attr()
est pour définir ou vérifier la valeur d'attribut de l'élément DOM et ne touchera pas la valeur des données jQuery. Si vous avez besoin des deux pour changer, vous devez utiliser à la fois.data()
et.attr()
. Sinon, restez avec l'un ou l'autre.la source
dans Jquery, les " données " ne s'actualisent pas par défaut:
Vous utiliseriez plutôt " attr " pour la mise à jour en direct:
la source
la source
L'utilisation
.data()
ajoutera uniquement des données à l'objet jQuery pour cet élément. Afin d'ajouter les informations à l'élément lui-même, vous devez accéder à cet élément en utilisant jQuery.attr
ou native.setAttribute
Pour accéder à un élément avec l'ensemble d'attributs, vous pouvez simplement sélectionner en fonction de cet attribut comme vous le notez dans votre message (
$('div[data-info="1"]')
), mais lorsque vous l'utilisez,.data()
vous ne pouvez pas. Afin de sélectionner en fonction du.data()
paramètre, vous devez utiliser la fonction de filtre de jQuery.jsFiddle Demo
la source
pour obtenir le texte d'un
la source