Was ist der beste Weg, um einen Wert in einer jQuery zu erhöhen .data()
Objekt?
jQuery .data() : Erhöhung möglich (++ oder –)?
Harald
Das sieht ein bisschen seltsam aus, aber laut den Dokumenten .data()
gibt alle Datenfelder als Objekt zurück, sodass Sie den Wert direkt ändern können:
$('#id').data('counter', 0);
Beide Optionen funktionieren:
$('#id').data().counter++;
$('#id').data()['counter'] += 5;
Das Abrufen der Daten gibt den erwarteten Wert zurück:
alert($('#id').data('counter')); // 6
-
Aus Leistungsgründen sollten Sie es vermeiden, Daten zweimal aufzurufen, verwenden Sie stattdessen Folgendes: stackoverflow.com/a/5656660/318765
– mgutt
14. August 2012 um 6:49 Uhr
gnarf
Oder, wenn Sie steuern, was Sie speichern, speichern Sie eine Objektreferenz, damit Sie die Werte auf dem Objekt direkt mit ändern können ++
:
var $elem = $('<div>');
$elem.data('something', {value:1});
$elem.data('something').value++;
console.log($elem.data('something').value); // 2
-
Vielen Dank! Während mein Weg in diesem speziellen Fall funktioniert, ist Ihr Weg eher JavaScript-lastig und die richtige Antwort für den allgemeinen Fall. Ihre kann sogar kürzer sein, wenn Sie die Referenz beibehalten:
var v = {value:1}; $elem.data('something', v); /*...*/ v.value++;
– Köbi
16. Mai 2010 um 4:35 Uhr
var data = parseInt ($.data("data-attr")) + 1;
$.data("data-attr",data);
Tom Bartel
Ich denke, Sie müssen den Wert lesen und zurückschreiben, also:
$(element).data('yourKey', $(element).data('yourKey') + 1);
Schließlich, data()
ist ein Funktionsaufruf, und das Erhöhen des Ergebnisses ändert nicht den Wert selbst, der sich in einer internen jQuery-Datenstruktur befindet.
Es ist so einfach wie das Erhöhen einer Variablen, speichern Sie einfach den .data() -Wert, erhöhen Sie ihn und speichern Sie ihn wieder.
Angenommen, Sie haben eine Zahl in der Datenvariablen NumbeR festgelegt.
var myNumber = $(selector).data('NumbeR');
$(selector).data('NumbeR', myNumber++)