jQuery Schleife durch data () Objekt
Frage
Ist es möglich, eine Schleife durch ein data()
Objekt?
Angenommen, dies ist mein Code:
$('#mydiv').data('bar','lorem');
$('#mydiv').data('foo','ipsum');
$('#mydiv').data('cam','dolores');
Wie kann ich eine Schleife durch das? Kann each()
dafür verwendet werden?
Lösung
jQuery speichert alle Dateninformationen in der jQuery.cache internen Variable. Es ist möglich, alle Daten mit einem bestimmten Objekt mit diesem einfachen, aber hilfreich Plugin verbunden zu bekommen:
jQuery.fn.allData = function() {
var intID = jQuery.data(this.get(0));
return(jQuery.cache[intID]);
};
diese mit an Ort und Stelle, können Sie dies tun:
$('#myelement').data('test1','yay1')
.data('test2','yay2')
.data('test3','yay3');
$.each($('#myelement').allData(), function(key, value) {
alert(key + "=" + value);
});
Sie könnten nur matt b Vorschlag verwenden, aber das ist, wie es mit dem zu tun, was Sie jetzt haben.
Andere Tipps
$.each($.data(this), function(i, e) {
alert('name='+ i + ' value=' +e);
});
Dies wird in ‚diesem‘ Element des Datenobjekts durch jede Eigenschaft laufen.
Getestet mit jQuery 1.4 und Tipps von @ user292614 folgenden Werken:
$('#mydiv').data('bar','lorem');
$('#mydiv').data('foo','ipsum');
$('#mydiv').data('cam','dolores');
$.each( $('#mydiv').data(),function(i, e) {
alert('name='+ i + ' value=' +e);
});
Ich glaube nicht, dass es eine Funktion ist, dass Sie alle den „Schlüssel“ der Daten, die mit der data()
Funktion hinzugefügt wurde, gibt, sondern, warum nicht alle Ihre Daten in die Funktion unter einem Objekt setzen / map?
so etwas wie folgt aus:
var container = new Object();
container.bar = "lorem";
container.foo = "ipsum";
container.cam = "dolores";
$("mydiv").data("container", container);
und dann, wenn Sie die Daten lesen wollen / durchlaufen sie:
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);
}
ich das gerade versucht, aber benötigt einige zusätzliche Datenwerte. Wenn Sie auch dieses „Problem“ bekommen dann soll die folgende arbeiten.
$('#mydiv').data('bar', {name:'lorem', id:'156', price:'199'});
dann können Sie einfach mit dem Wert ID verlängern
$.each( $('#mydiv').data(),function(i, e) {
alert('name='+ i + ' name=' +e.name + ' id='e.id + ' price=' + e.price );
});
Wenn wir verwenden .data () bedeutet, dass es mit den angepassten Elementen zugeordnet beliebige Daten speichern oder den Wert an dem genannten Datenspeicher für das erste Element in dem Satz von abgestimmten Elementen zurück.
und wenn .data () in einer Schleife so müssen wir es gleiche Art und Weise in der Schleife Zugriff so für z (unten)
<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>
Der HTML-Code in meiner Schleife und data-today
ist das gleiche in allen Tags, aber ihre Werte unterscheiden sich also im Grunde ist es Schleife erzeugt html
so haben wir in gleicher Weise d.h Schleife in js/jQuery
zuzugreifen, beispielsweise für (below jQuery code)
$('.weekday').each(function(){
$(this).data('today');
});
OutPut :
Monday
Tuesday
Wednesday
Thursday
Hinweis: In-Browser-Konsole es insbesondere <DIV>
zurückkehren