Wenn ich das mache, bekomme ich einen Fehler:
Komponente hat Fehlercode zurückgegeben: 0x8000ffff (NS_ERROR_UNEXPECTED) [nsIDOMHistory.pushState]
Wenn ich den Selektor in eine Zeichenkette ändere, verschwindet der Fehler ... Aber ich brauche das jQuery-Objekt, damit ich beim Ereignis "popstate" darauf klicken kann: s
Wenn Sie sowohl die Antwort von Brian Nickel als auch von GregL erweitern, können Sie das lösen, indem Sie $ ('#' + this.id) .attr ('href') ... so lange machen, wie Sie das DOM identifizieren, wie von beiden vorgeschlagen vor mir.
Manchmal bekomme ich nur das gewünschte Ergebnis:
%Vor% und es ermöglicht mir, mit meiner id-ing kreativ zu sein, wo ich zum Beispiel $('#'+this.id+'*locator*');
Die Daten im Verlaufszustand müssen serialisierbar sein. Das heißt, es muss in JSON konvertierbar sein. $(this)
gibt ein Array-ähnliches Objekt mit DOM-Knoten zurück, die nicht in JSON konvertiert werden können. Sie sollten nach einem anderen Weg suchen, um das zu tun, was Sie suchen.
Denken Sie daran, der Push-Status ist nur hilfreiche Information und soll nicht kanonisch sein. Wenn der Benutzer nicht den gleichen Inhalt durch Kopieren und Einfügen der URL in der Adressleiste erhalten kann, haben Sie ein Problem.
Sie können eine Referenz auf ein (nicht-serialisierbares) Rich-Objekt speichern und sie dann durch Referenz abrufen.
Sehen Sie eine kurze Demo:
%Vor%Sie sollten dem DOM-Knoten, der durch das jQuery-Objekt repräsentiert wird, eine ID oder ein anderes eindeutiges Attribut zuweisen. Dann können Sie den Wert dieser ID in Ihrem Datenobjekt einfach als Zeichenfolge speichern, die serialisierbar ist.
Wenn das Element keine eindeutige ID hat, sollten Sie eine erstellen und sie zum Element hinzufügen.
Tags und Links javascript jquery html5 history