2012-05-16 9 views
10

Duplicar posible:
jquery - disable anchor “jump” when loading a pageEvitar el desplazamiento de página/saltar cuando el ancla está en la URL

Estoy mostrando un div en función del valor hash en un URL, pero quiero para evitar que la página salte a la posición de ese div con esa ID en particular.

Solo tengo el problema cuando la página se navega directamente con el hash en la URL, por ejemplo, si alguien ha marcado la página.

Así, por ejemplo, que tienen la url domain.com/page.html#myitem-1

ID = mostrará entonces myItem-1, lo que lo hace pero la página a continuación, salta a la Postion de ese div que no quiero

yo estaba tratando de utilizar scrollTop (0) para forzar la posición de la ventana de nuevo a la parte superior, pero parece como si esta es llamada antes del salto de anclaje tiene lugar a no tiene ningún efecto

código Ejemplo:

$(document).ready(function() { 
    $('.glossary-term').hide(); 
    $(window.location.hash).show(); 

    $(window).scrollTop(0); 

}); 

La única forma en que pude hacer funcionar este scrollTop fue colocarlo en un setTimeOut con una duración de 1, pero esto parece un poco complicado. ¿Cualquier otra sugerencia?

Gracias

B

+0

gracias chicos pensaron clic en el voto a favor fue suficiente. Algunas respuestas que realmente no ayudaron, ¿simplemente las ignoré? Normalmente respondí con un comentario pero no hice un seguimiento. Gracias de nuevo. – Ben

+0

hola Ben, ¿cómo lo has resuelto por favor? El mismo problema que tengo –

Respuesta

7

Bueno, si es su mecanismo interno para el uso de anclas sólo para mostrar divs siempre se puede cambiar (o eliminar) el atributo "name" para que el navegador no lo encontrará directamente y no a tratar de desplazarse;)

intentar lo contrario How to disable anchor "jump" when loading a page?

+0

Gracias por la respuesta, en realidad no hay una etiqueta de nombre, está saltando allí porque el DIV tiene el ID de eso. Supongo que estrictamente hablando no es un ancla de tal pero la misma funcionalidad. Me gustaría mantener los ID en su lugar ya que significa que se degrada bien cuando JS está desactivado. El enlace parece que está usando la misma idea que estaba probando con el setTimeOut, pero parece un truco, quizás no y solo un camino por recorrer. – Ben

+0

Bueno, si establece un ancla, el navegador intentará seguirlo, por lo que tiene que hackearlo de alguna manera ... ¿Y ha intentado restablecer su ancla en la carga de la página? Me gusta con 'window.location.hash = "";' o 'window.location.hash = "top";' – Majki

+0

¿Y ha intentado restablecer su ancla en la carga de la página? Me gusta con 'window.location.hash = "";' o 'window.location.hash = "top";' $ (document) .ready (function() { $ ('. glossary-term'). hide(); $ (window.location.hash) .show(); window.location.hash = ""; $ (ventana) .scrollTop (0); }); – Majki

Cuestiones relacionadas