Was ist der beste Weg, um einen Wert in einem jQuery .data()
Objekt zu erhöhen?jQuery .data(): Inkrement (++ oder -) möglich?
Antwort
Dies ist ein wenig seltsam aussieht, aber nach die Dokumentation .data()
alle Datenfelder als ein Objekt zurückgibt, so dass Sie seinen Wert direkt ändern können:
$('#id').data('counter', 0);
Beide Optionen funktionieren:
$('#id').data().counter++;
$('#id').data()['counter'] += 5;
Abrufen der Daten zurückgeben den erwarteten Wert.
alert($('#id').data('counter')); // 6
Ich denke, Sie werden den Wert lesen und es wieder schreiben, so:
$(element).data('yourKey', $(element).data('yourKey') + 1);
Immerhin data()
ein Funktionsaufruf ist, und das Ergebnis Inkrementieren den Wert selbst nicht ändern, die in sitzt eine interne jQuery-Datenstruktur.
var data = parseInt ($.data("data-attr")) + 1;
$.data("data-attr",data);
Oder, wenn Sie kontrollieren, was Sie speichern, speichern eine Objektreferenz, so dass Sie die Werte für das Objekt modifizieren kann direkt ++
mit:
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 JavaScripty-Weg das richtige und ist die richtige Antwort für den allgemeinen Fall. Sie können sogar kürzer sein, wenn Sie die Referenz behalten: 'var v = {value: 1}; $ elem.data ('etwas', v); /*...*/ v.value ++; ' – Kobi
Es ist so einfach, wie eine Variable zu, speichern nur die .data() Wert, erhöht es und speichern Sie es zurück in
Nehmen wir an, Sie haben eine Zahl in der NumbeR-Datenvariablen festgelegt.
var myNumber = $(selector).data('NumbeR');
$(selector).data('NumbeR', myNumber++)
- 1. jQuery animieren Dezimalzahl Inkrement/Dekrement
- 2. jQuery Data Binding-Bibliothek oder Plugin-Empfehlung
- 3. Welcher Operator ist leistungsfähiger Plus (+) oder Inkrement (++)
- 4. jQuery Klon Tabellenzeile (DATA)
- 5. jQuery Kern/Daten oder benutzerdefinierte Attribute (Data-Driven)
- 6. Pre-Inkrement vs Post-Inkrement in Array
- 7. Pre-Inkrement und Post-Inkrement in C
- 8. HashMap Klick Zähler Inkrement
- 9. Empty Data Member Optimierung: wäre es möglich?
- 10. jQuery .data() mit dem Fragment
- 11. jQuery data() gibt undefined zurück
- 12. Zugriff auf das Attribut 'data-' ohne jQuery
- 13. Identität Spalte Inkrement springen
- 14. PySpark bedingte Inkrement
- 15. JQuery Fullcalendar Zeilenhöhe Inkrement für die Wochenansicht (Agenda)
- 16. "Auto inkrement" Alphabet in Java?
- 17. Inkrement ID in DerbyDB
- 18. Präfix/Postfix Inkrement Operatoren
- 19. C# Inkrement Dekrement Listenwerte
- 20. jQuery data(): kann keine Daten mit jQuery Selektoren
- 21. Sind 301 Weiterleitungen mit Javascript oder jQuery möglich?
- 22. Get data-Attribut jquery vs Javascript
- 23. Clone Formular und Inkrement
- 24. Mongoose - Inkrement mit findOne
- 25. Mongoose Auto-Inkrement
- 26. Heroku MySQL Auto Inkrement
- 27. Cassandra Spaltenschlüssel automatisches Inkrement
- 28. ID ungewöhnliches Inkrement
- 29. Auto-Inkrement-Verbundschlüssel InnoDB
- 30. Ausgabe mit Datum Inkrement
+1 Netter Fang !! – Reigel
Aufgrund der Leistung sollten Sie vermeiden, Daten zweimal aufzurufen, verwenden Sie stattdessen stattdessen: http://stackoverflow.com/a/5656660/318765 – mgutt