Update: Die Lösung, die ich geschrieben das Problem nicht beheben, die ich beschrieben ^^ werde nach wieder, wenn ich erinnere mich, als ich es lösen . Update2: Ich habe das Problem für jetzt gelöst (siehe unten).
Frage ist ein bisschen alt, aber wenn jemand auf diese Frage stößt wie ich, könnte ein schneller Wechsel zu der obigen Lösung von Justin Hamade einigen Menschen helfen.
Wenn Sie Jquery Address 'externalChange-Ereignis statt nur "change" verwenden, verhindert es das Senden einer überflüssigen Anfrage (in meinem Fall führte dies zu einem Fehler in der Javascript-Konsole). Dies ist so, weil, wenn jemand auf einen Tab klickt, die Adresse sich selbst ändert (dank jquery ui), diese Änderung triggert $ .address.change einmal, was eine Registerkarte auswählt, obwohl jquery-ui dies bereits getan hat ... Zumindest ich denke, das ist was los ist.
Auch mochte ich nicht die Tabs erstellen Hashes wie "# ui-tab-2", "# ui-tab-3" usw., so habe ich den folgenden Code verwendet, der die URLs die Namen der Ankerelemente verwendet wie die Hash-Werte (zB "www.example.com # cool_stuff" anstelle von "www.example.com # ui-Tab-2"):
$(function() {
$("#tabs").tabs({
cache: false,
});
// For forward and back
$.address.externalChange(function(event){
var name = window.location.hash != "" ? window.location.hash.split("#")[2] : ""
$("#tabs").tabs("select" , $("#tabs a[name="+ name + "]").attr('href'))
});
// when the tab is selected update the url with the hash
$("#tabs").bind("tabsselect", function(event, ui) {
$.address.hash(ui.tab.name);
});
});
jedoch A) ich bin neu in jquery und nicht Sicher, das ist effizient/sicher/"Der richtige Weg, es zu tun", und B) sicher sein, nur diese zu verwenden, wenn Sie sicher sein können, dass das 'Name' Attribut der Anker keine Zeichen hat, die nicht URI sicher sind Raum).
Update2: Ich habe "gelöst", das Problem in Update1 für jetzt, aber es hat die schrecklich hässlich Linie:
var name = window.location.hash != "" ? window.location.hash.split("#")[2] : ""
Weil offenbar der $ .address.hash (val) Funktion fügt ein „/ # "nach dem ersten Hash, aber wenn wir nicht die $ .Adresse verwenden.hash (val) then externalChange wird ausgelöst (von window.location.hash = val)
Die Version, die er hier benutzt, ist die alte Version, bis Version 3, die man benutzen sollte, Entschuldigung, sollte das geschrieben haben in. – CesarHerrera
'hier' Link ist kaputt. Gibt "Objekt nicht gefunden!" –