boucle jQuery à travers l'objet data()

Est-il possible de faire une boucle par un data() objet?

supposons que ce soit mon code:

$('#mydiv').data('bar','lorem');  
$('#mydiv').data('foo','ipsum');  
$('#mydiv').data('cam','dolores');

Comment faire une boucle à travers ceci? Pouvez

6 ответов

jQuery stocke toutes les informations de données dans le jQuery.mémoire cache interne variable. Il est possible d'obtenir toutes les données associées à un objet particulier, avec cette simple mais utile plugin:

jQuery.fn.allData = function() {
    var intID = jQuery.data(this.get(0));
    return(jQuery.cache[intID]);
};

dans ce lieu, vous pouvez faire ceci:

$('#myelement').data('test1','yay1')
               .data('test2','yay2')
               .data('test3','yay3');

$.each($('#myelement').allData(), function(key, value) {
    alert(key + "=" + value);
});

Vous pouvez utiliser la suggestion de matt b, Mais voici comment faire avec ce que vous avez en ce moment.

14
répondu Paolo Bergantino 2009-04-21 17:59:51
la source
$.each($.data(this), function(i, e) {
   alert('name='+ i + ' value=' +e);
});

cela va itérer à travers chaque propriété de l'objet de données de 'cet' élément.

19
répondu John Strickler 2010-06-24 17:08:32
la source

je ne pense pas qu'il y est une fonction qui vous donne toutes les "clés" de données qui a été ajouté avec le data() fonction, mais au lieu de cela, pourquoi ne pas mettre toutes vos données dans la fonction sous un objet / Carte?

quelque chose comme ceci:

var container = new Object();
container.bar = "lorem";
container.foo = "ipsum";
container.cam = "dolores";
$("mydiv").data("container", container);

et puis si vous voulez lire les données / itérer dessus:

var blah = $("mydiv").data("container");
for(key in blah) {
    var value = blah[key];
    //do whatever you want with the data, such as:
    console.log("The value of ", key, " is ", value);
}
9
répondu matt b 2009-04-21 17:42:54
la source

Testé avec jQuery 1.4 et les conseils de @user292614 les travaux suivants:

$('#mydiv').data('bar','lorem');  
$('#mydiv').data('foo','ipsum');  
$('#mydiv').data('cam','dolores');

$.each( $('#mydiv').data(),function(i, e) {
   alert('name='+ i + ' value=' +e);
});
9
répondu Mikael Svenson 2010-06-24 17:07:33
la source

je viens d'essayer ceci mais j'avais besoin de quelques valeurs de données supplémentaires. Si vous avez aussi ce "problème" alors ce qui suit devrait fonctionner.

$('#mydiv').data('bar', {name:'lorem', id:'156', price:'199'}); 

alors vous pouvez simplement étendre avec la valeur id

$.each( $('#mydiv').data(),function(i, e) {
   alert('name='+ i + ' name=' +e.name + ' id='e.id + ' price=' + e.price );
});
0
répondu Marthin 2010-11-16 12:56:34
la source

si on l'utilise .data () signifie qu'il stocke des données arbitraires associées aux éléments appariés ou renvoie la valeur au magasin de données nommé pour le premier élément dans l'ensemble des éléments appariés.

et si .data () en boucle donc nous devons y accéder de la même manière en boucle donc pour E. g (ci-dessous)

<p class="weekday" data-today="monday">Monday</p>
<p class="weekday" data-today="tuesday">Tuesday</p>
<p class="weekday" data-today="wednesday">Wednesday</p>
<p class="weekday" data-today="thursday">Thursday</p>

le html dans ma boucle et data-today est la même dans tous les tags mais leurs valeurs sont différentes donc, fondamentalement, c'est la boucle généré html nous devons donc accéder de la même manière I. boucle e dans js/jQuery par exemple (below jQuery code)

$('.weekday').each(function(){ $(this).data('today'); });

OutPut :

Monday
Tuesday
Wednesday
Thursday

REMARQUE : Dans le navigateur de la console de retourner particulier <DIV>.

0
répondu Vrushal Raut 2017-04-10 07:33:18
la source

Autres questions sur