2009-06-20 10 views
18

Sarò onesto, sono molto lontano dalla mia profondità. Ho creato un sistema di impaginazione in cui si fa clic su un collegamento, si ricarica la pagina e un certo numero di voci di elenco vengono visualizzate in un elenco non ordinato. Quando lo fai nuovamente clic, ricaricherà la pagina e altri elementi verranno visualizzati. Pensa a come Twitter mostra i tweet nel tuo feed.Ottieni la posizione di scorrimento corrente e passala come variabile con un collegamento?

Il problema è quando si ricarica la pagina rimane in cima. Quello che vorrei è che salti nella stessa posizione sulla pagina che aveva in precedenza.

Ho già un selettore per il collegamento impostato bene. Solo non so come ottenere la posizione corrente dello scorrimento e quindi passarlo alla nuova pagina in cui saltare.

Ecco il mio codice finora:

jQuery(document).ready(function(){ 
    $("a[rel=more]").live("click", function(){ 
     //script... 
    }); 
}); 

dove devo andare da qui?

+0

Sto anche lavorando su AJAX per fare questo lavoro, ma per farlo ho bisogno di essere in grado di leggere le variabili XSLT con javascript. Si può rispondere che uno qui se vuoi: http://stackoverflow.com/questions/1022732/setting-an-xslt-variable-as-a-javascript-variable –

risposta

29
  1. ricaricare l'elementi utilizzando AJAX invece di ricaricare l'intera pagina.

  2. Ottenere e impostare la posizione di scorrimento utilizzando window.pageYOffset e window.scrollTo(0, y).

    avrei memorizzare la posizione nella hash del URL:

    // after loading the document, scroll to the right position 
    // maybe location.hash has to be converted to a number first 
    $(document).ready(function() { 
        window.scrollTo(0, location.hash); 
    }); 
    
    // I'm not quite sure if reload() does preserve the hash tag. 
    location.hash = window.pageYOffset; 
    location.reload(); 
    
+2

se questa lista è su una scorrevole DIV come posso far scorrere la barra di scorrimento di DIV nella posizione desiderata? –

+0

@asabo: Non ne sono sicuro, ma non penso sia possibile. Dovresti creare una visualizzazione di scorrimento personalizzata. (. Il che non è poi così difficile) –

+2

Per una funzione cross-browser per ottenere la pagina compensato, provate questo: http://www.howtocreate.co.uk/tutorials/javascript/browserwindow Scorrere verso il basso per la funzione getScrollXY(). –

2

GS detto aggiungere gli elementi tramite una chiamata AJAX invece di ricaricare la pagina.

Se non si desidera utilizzare per il plugin jQuery.ScrollTo. Che sostiene tutto ciò che riguarda lo scorrimento si avrebbe mai potuto sognato

1

secondo il collegamento di @Shawn Grigson, pageYOffset non è supportata la stessa in tutti i browser.

una soluzione jQuery (si spera davvero compatibile cross-browser, sebbene non l'abbia ancora testata) per ottenere e impostare lo scorrimento verticale di un elemento è scrollTop().

2

Penso che quello che serve è solo per passare un ancoraggio HTML alla fine del tuo link. Il browser scorrerà automaticamente sull'elemento accanto all'ancora corrispondente. Esempio:

<a href="page2.html#myanchor">Next page</a> 

Ad un certo punto nel mezzo della page2:

<a name="myanchor">My item N</a> 
Problemi correlati