2009-06-20 7 views
18

Seré honesto, estoy fuera de mi alcance aquí. Creé un sistema de paginación en el que, al hacer clic en un enlace, vuelve a cargar la página y se muestra una cierta cantidad de elementos de la lista en una lista desordenada. Cuando vuelva a hacer clic, volverá a cargar la página y se mostrarán más elementos. Piensa cómo Twitter muestra los tweets en tu feed.¿Obtiene la posición de desplazamiento actual y la pasa como una variable con un enlace?

El problema es que cuando vuelve a cargar la página permanece en la parte superior. Lo que me gustaría es que salte a la misma posición en la página que tenía anteriormente.

Ya tengo un selector para la configuración del enlace bien, simplemente no sé cómo obtener la posición de desplazamiento actual y luego pasarla a la nueva página para que salte.

Aquí está mi código hasta ahora:

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

¿Dónde puedo ir desde aquí?

+0

También estoy trabajando en AJAX para hacer este trabajo, pero con el fin de hacer eso tengo que ser capaz de leer las variables XSLT con javascript Puede responder esta si desea: http://stackoverflow.com/questions/1022732/setting-an-xslt-variable-as-a-javascript-variable –

Respuesta

29
  1. Vuelva a cargar los elementos con AJAX en lugar de volver a cargar toda la página.

  2. Obtenga y configure la posición de desplazamiento usando window.pageYOffset y window.scrollTo(0, y).

    Me almacenar la posición en el hash de la 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

si esta lista se puede desplazar DIV ¿cómo puedo hacer que la barra de desplazamiento de DIV se desplace hasta la posición deseada? –

+0

@asabo: No estoy seguro, pero no creo que esto sea posible. Tendría que crear una vista de desplazamiento personalizada. (Que no es tan difícil.) –

+2

Para una función de navegador cruzado para obtener el desplazamiento de página, intente esto: http://www.howtocreate.co.uk/tutorials/javascript/browserwindow Desplácese hasta la función getScrollXY(). –

2

Como gs dijeron añadir los elementos a través de una llamada AJAX en lugar de de recargar la página.

Si no desea utilizar el complemento jQuery.ScrollTo. Que soporta todo lo relacionado con el desplazamiento que podría haber soñado

1

según el enlace de @Shawn Grigson, la páginaYOffset no se admite de la misma manera en todos los navegadores.

una solución de jQuery (con suerte verdaderamente compatible con varios navegadores, aunque aún no lo he probado) para obtener y configurar el desplazamiento vertical de un elemento es scrollTop().

2

Creo que lo que necesita es simplemente pasar un ancla HTML al final de su enlace. El navegador se desplazará automáticamente al elemento justo al lado del ancla coincidente. Ejemplo:

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

En algún punto en medio de la página 2:

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