Frage

Kann mir jemand sagen, wo jquery data() speichert die Daten, und wenn sie erhalten gelöscht wird und wie?

Gibt es eine Performance-Problem, wenn ich diese verwenden Ajax-Aufruf Ergebnis zu speichern?

Zum Beispiel:

$("body").data("test", { myData: 'abcd'});
War es hilfreich?

Lösung

siehe

den Inhalt von jquery

Die jQuery.data () Methode ermöglicht es uns, Daten aller Art zu DOM-Elementen in eine Art und Weise zu befestigen, die aus zirkulären Referenzen sicher ist und daher frei von Speicherlecks. jQuery stellt sicher, dass die Daten entfernt wird, wenn DOM Elemente über jQuery Methoden entfernt werden, und wenn der Benutzer verlässt die Seite. Wir können mehrere verschiedene Werte für ein einzelnes Element gesetzt und empfangen sie später:

Andere Tipps

Alle Daten werden in einer Eigenschaft des jQuery Objekt mit dem Namen cache gespeichert. Melden Sie sich den Inhalt der $.cache in Ihrer Konsole alle Daten und Ereignisse im Zusammenhang mit jedem DOM-Elemente zu sehen.

Der Weg verbindet auf jQuery ein DOM-Objekt mit einem Objekt in diesem Cache ist durch das DOM-Objekt zu manipulieren. Sagen wir ein Eingangselement haben

<input type="text" value="hello" />

, die einen Datenschlüssel hat den Namen "foo"

$(e).data("foo", "bar");

Jetzt jQuery unterhält eine zufällige Zeichenfolge des Formulars jQuery<current time in ms> zum Beispiel jQuery1291790929680, die durch $.expando auch zugänglich ist. jQuery fügt diese expando Zeichenfolge als Schlüssel für jedes DOM-Objekt, das ein zugeordneten Datenelement oder ein Ereignis hat. So ist das DOM-Objekt für das Element oben Eingangs wird diesen expando Schlüssel mit einem gewissen ganzzahligen Wert enthält wie:

jQuery1291790929680: 4

4 ist nur ein beliebige Beispiel, aber diese Zahl bezeichnet einen Index in dem $.cache Objekt, wobei die zugehörigen Daten und Ereignisse für dieses DOM-Objekt gespeichert sind. Also diese Informationen gegeben, die Daten des oben Eingangselement abzurufen, können wir indirekt schreiben:

$.cache[4]["foo"]

, die zurückkehren sollte "bar", das ist eine indirekte Art und Weise $(e).data("foo") zu schreiben.

Ein dargestellten Beispiel des obigen Unsinn:)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top