Update: La soluzione che ho postato non risolve il problema che ho descritto ^^ pubblicheremo di nuovo se mi ricordo quando ho risolto . Update2: Ho "risolto" il problema per ora (vedi sotto).
La domanda è un po 'vecchia, ma se qualcuno si imbatte in questa domanda come ho fatto io, una rapida modifica alla soluzione di cui sopra di Justin Hamade potrebbe aiutare alcune persone.
Se si utilizza l'indirizzo di Jquery 'externalchange invece di solo "change" impedisce l'invio di una richiesta superflua (nel mio caso si verifica un errore nella console javascript). Questo perché se qualcuno fa clic su una scheda l'indirizzo cambia da solo (grazie a jquery ui), la modifica attiva $ .address.change una volta, che seleziona una scheda anche se jquery-ui lo ha già fatto ... Almeno io pensa quello che stava succedendo.
Inoltre, non mi piacevano le schede che creavano hash come "# ui-tab-2", "# ui-tab-3" ecc, quindi ho usato il seguente codice che rende gli url utilizzare i nomi degli elementi di ancoraggio come gli hash (vale a dire "www.example.com # cool_stuff" invece di "www.example.com # ui-scheda-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);
});
});
Tuttavia, a) sono nuovo di jQuery e non sicuro che questo sia efficiente/sicuro/"Il modo giusto di farlo", e B) Assicurati di usarlo solo se puoi essere sicuro che l'attributo "nome" degli ancore non ha caratteri che non sono sicuri per l'URI (es. spazio).
Update2: Ho "risolto" il problema in Update1 per ora, ma ha il terribilmente brutto linea:
var name = window.location.hash != "" ? window.location.hash.split("#")[2] : ""
Perché a quanto pare la funzione di $ .address.hash (val) aggiunge un "/ # "dopo il primo hash, ma se non si usa $ .address.hash (val) then externalChange viene attivato (da window.location.hash = val)
La versione che sta usando qui è la vecchia versione, la sua versione fino alla versione 3 che è quella che sto usando, scuse, avrebbe dovuto scrivere che – CesarHerrera
'qui' link è rotto. Fornisce "Oggetto non trovato!" –