jQuery .data() : Erhöhung möglich (++ oder –)?

Lesezeit: 1 Minute

Benutzeravatar von Haroldo
Harald

Was ist der beste Weg, um einen Wert in einer jQuery zu erhöhen .data() Objekt?

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

Benutzeravatar von gnarf
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);

Benutzeravatar von Tom Bartel
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++)

1435730cookie-checkjQuery .data() : Erhöhung möglich (++ oder –)?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy