Domanda

sto utilizzando plugin di fisarmonica di jQuery UI-con la navigazione hash tag, ma sto correndo in un problema. Ogni pagina del mio sito ha una fisarmonica penseremo su di esso. Gli URL nel secondo livello del mio menu di navigazione principale si suppone per aprire il pannello di corretta della fisarmonica utilizzando il tag hash di accompagnamento, e sono scritte in questo modo:

<li class="lvl2"><a href="/thepage.jsp#panel-3">panel 3</a></li>

Il problema è che, se si sta già guardando un pannello di una delle fisarmoniche, cercando di fare un pannello diverso aprire con il secondo livello di navigazione non funziona. Si passa il tag hash nella barra degli indirizzi, ma non apre il pannello di fisarmonica a meno che non si aggiorna la pagina. Così ho pensato che avrei potuto risolvere il problema con l'aggiunta di un po 'di jQuery che causerebbe la pagina da aggiornare dopo 500 millisecondi, in questo modo:

$('.lvl2 a').click(function() {
    setTimeout(function() {
        location.reload();
    },500);
});

solo che adesso che sabotaggi navigazione via dalla pagina a una nuova pagina e di un nuovo pannello di fisarmonica. Il che mi dice la risposta potrebbe essere quella di prendere il pieno controllo della tutte le funzionalità del secondo livello di navigazione e di gestire con jQuery.

Quindi, come potrei modificare questa di "immagazzinare" l'URL dall'attributo href del tag di ancoraggio, passarlo al browser, e poi aggiornare la pagina?

È stato utile?

Soluzione 2

Ho suonato in giro con ancora un po 'e sono riuscito a farlo funzionare in quello che sembra essere un modo coerente. Fondamentalmente, ho cambiato gli attributi href in tutti i tag lvl2 di ancoraggio per rel attributi e poi utilizzato quell'attributo nella mia funzione jQuery per gestire la navigazione al nuovo URL. Poi ho aumentato il timeout da 500 a 1000 millisecondi. Niente di meno sembra per aggiornare la pagina troppo presto, prima che arrivi la possibilità di andare al nuovo URL.

$('.lvl2 a').click(function() {
    location.href=$(this).attr('rel');
    setTimeout(function() {
        location.reload();
    },1000);
});

Altri suggerimenti

Se accordians lvl2 sono dinamici, potrebbe essere necessario utilizzare live o liveQuery invece di click.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top