Pergunta

Eu vou ser honesto, eu sou maneira fora de minha profundidade aqui. Eu criei um sistema de paginação onde você clica em um link que recarrega a página e um certo número de itens da lista são mostrados em uma lista não ordenada. Quando você clicar nele novamente ele vai recarregar a página e mais itens que mostram. Pense como Twitter mostra os tweets no seu feed.

O problema é quando se recarrega a página permanece no topo. O que eu gostaria é para ele para saltar para a mesma posição na página que tinha anteriormente.

Eu já tenho um seletor para o link set up bem Eu só não sei como obter a posição de rolagem atual e, em seguida, passá-lo para a nova página para que possa saltar.

Aqui está o meu código até agora:

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

Para onde eu vou daqui?

Foi útil?

Solução

  1. Recarregar os itens usando AJAX em vez de recarregar a página inteira.

  2. obter e definir a posição de rolagem usando window.pageYOffset e window.scrollTo(0, y).

    Eu armazenar a posição no hash da 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();
    

Outras dicas

Como gs disse adicionar os elementos através de uma chamada de ajax em vez de de recarregar a página.

Se você não quiser usar o jQuery.ScrollTo plugar. Que suporta tudo relacionado a rolagem você jamais poderia ter sonhado

Eu acho que o que você precisa é apenas para passar uma âncora HTML no final do seu link. O navegador irá rolar automaticamente para o elemento ao lado da âncora correspondido. Exemplo:

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

Em algum ponto no meio da página 2:

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

de acordo com a ligação de @Shawn Grigson, pageYOffset não é suportado o mesmo em todos os navegadores.

uma solução jQuery (espero verdadeiramente cross-browser compatível, embora eu ainda não testei) para obter e definir rolagem vertical de um elemento é scrollTop () .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top