2010-03-31 9 views
8

Le schede dell'interfaccia utente JQuery vengono implementate mediante ancore denominate in un elenco non ordinato. Quando si passa sopra una delle schede si può vedere questo nel link indicato ai piedi del browser:Schede dell'interfaccia utente JQuery: come si passa direttamente a una scheda da un'altra pagina?

http://mysite/product/3/#orders 

Sopra sarebbe la scheda "ordini", per esempio. Ovviamente JQuery intercetta il clic su questa ancora e apre la scheda.

Tuttavia, se si inserisce il collegamento sopra riportato o si collega ad esso da un'altra posizione nel sito, la pagina non viene aperta nella scheda specifica.

Nel blocco di inizializzazione della scheda stavo considerando di inserire un codice che cerca un'ancora con nome nell'URL e, se ne trova uno, esegue una ricerca dell'indice delle schede e chiama la selezione su di esso. Ciò significherebbe che funzionerà ancora con JS disattivato.

Ma c'è un modo più semplice/bello/migliore?

+0

Il controllo scheda JS non avrebbe funzionato con JS girato di dato che è all js – hunter

+0

Interessante - 1.3.2. Ho intenzione di aggiornare per un po ', ma sto seguendo la politica "non è rotto non aggiustarlo". Sembra che abbia un buon motivo per eseguire l'upgrade ora (anche se non vedo l'ora di ripetere il test) –

+0

@Hunter - nessuna scheda funzionerebbe, ma il comportamento sarebbe comunque corretto. Se JS è stato disattivato, il collegamento verrebbe indirizzato alla parte corretta della pagina. –

risposta

9

Trovato questo esempio here:

if(document.location.hash!='') { 
    //get the index from URL hash 
    tabSelect = document.location.hash.substr(1,document.location.hash.length); 
    $("#my-tabs").tabs('select',tabSelect-1); 
} 
+0

perfetto, l'ho avvolto in una funzione di supporto e l'ho chiamato dall'evento di caricamento del controllo delle schede, grazie –

+1

Una cosa che non fa è mantenere le informazioni di hash tra le schede. Quindi, se ho ottenuto da www.page.com # 1 a www.page.com # 2 dalla stessa pagina, non cambierà la scheda. –

+0

@ Zach - dove eri l'anno scorso? – hunter

3

Nelle versioni di jQuery UI precedenti alla 1.8 (non incluso) è praticamente il modo in cui dovresti farlo. L'estensione di tabulazione (AFAIK) non è in grado di cambiare in base a quale ancoraggio è inizializzato con (quando la pagina viene caricata), quindi è necessario eseguire manualmente quel bit (nell'evento ready, ovviamente).

Come another answer indica, la nuova versione delle schede nell'interfaccia utente jQuery 1.8 supports bookmarking out of the box.

+0

grazie, volevo solo essere sicuro che non mi mancasse nulla di ovvio. Deve essere un requisito comune –

+0

FWIW la demo che hanno sul sito dell'interfaccia utente jQuery sembra inizializzarsi correttamente all'ancora. – R0MANARMY

+0

@ R0MANARMY - Suggerisco di aggiungere una risposta che dice "questo funziona nell'ultima versione". Potrei segnarti su –

5

A partire dalla versione 1.8 jQuery UI supporta questa funzionalità. Vedi l'esempio qui:

  1. Second tab active by default
  2. Third tab active by default
+0

grazie, andato con il rilascio stabile per il momento, ma io aggiornerò quando io can –

+0

BTW jQueryUI 1.8 è l'attuale versione stabile (si veda la sezione * Che ne è di jQuery UI 1.7? *). http://blog.jqueryui.com/2010/03/jquery-ui-18/ – R0MANARMY

+0

strano, non hanno ancora aggiornato la prima pagina: Ultima (1.8: jQuery 1.4+) Stabile (1.7.2: jQuery 1.3+) - Sto usando jquery 1.3 anche così aggiornerei entrambi allo stesso tempo. –

0

Io uso il plugin sessione per ottenere questo risultato in una classe scheda personalizzata

Problemi correlati