2012-05-16 10 views
10

Eventuali duplicati:
jquery - disable anchor “jump” when loading a pageEvitare la pagina di scorrimento/salto quando ancora è l'URL

sto visualizzando un div a seconda del valore di hash in un URL, ma voglio per evitare che la pagina salti nella posizione di quel div con quel particolare ID.

Ho solo il problema quando la pagina viene spostata direttamente con l'hash nell'URL, per esempio, ad esempio se qualcuno ha il libro segnato la pagina.

Così, per esempio io ho l'url domain.com/page.html#myitem-1

ID = MyItem-1 mostrerà quindi, che lo fa ma la pagina salta poi giù per la postion di che div che non voglio

Stavo cercando di utilizzare scrollTop (0) per forzare la posizione della finestra torna ma sembra come se questo viene chiamato prima il salto di ancoraggio avviene per non ha alcun effetto

codice Esempio:

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

    $(window).scrollTop(0); 

}); 

L'unico modo in cui sono riuscito a far funzionare questo scrollTop è stato inserirlo in un setTimeOut con una durata di 1, ma questo sembra un po 'un trucco. Qualche altro suggerimento?

Grazie

B

+0

Grazie ragazzi pensiero cliccando il voto up è stato sufficiente. Alcune risposte che non aiutano davvero a ignorarle? Normalmente ho risposto con un commento ma non ho avuto un seguito. Grazie ancora. – Ben

+0

Ciao Ben, come lo hai risolto? lo stesso problema che ho –

risposta

7

Beh, se è il vostro meccanismo interno per l'utilizzo di ancoraggi solo per la visualizzazione div si può sempre cambiare (o rimuovere) il "nome" di attributo modo che il browser non lo troverete direttamente e non cercherà di scorrere;)

altrimenti prova How to disable anchor "jump" when loading a page?

+0

Grazie per la risposta, in realtà non esiste un tag name, si sta saltando lì perché il DIV ha l'ID di quello. Credo che a rigor di termini non sia un'ancora di tale ma stessa funzionalità. Mi piacerebbe mantenere gli ID in atto perché significa che degrada bene quando JS è disabilitato. Sembra che il link stia usando la stessa idea che stavo provando con il setTimeOut ma che è caduto come un po 'un hack, forse non e l'unica strada da percorrere. – Ben

+0

Bene, se si imposta un ancoraggio il browser proverà a seguirlo, quindi è necessario hackerarlo in qualche modo .. E hai provato a resettare il tuo ancoraggio al caricamento della pagina? Come con 'window.location.hash = "";' o 'window.location.hash = "top";' – Majki

+0

E hai provato a resettare il tuo ancoraggio al caricamento della pagina? Come con 'window.location.hash = "";' o 'window.location.hash = "top";' $ (document) .ready (function() { $ ('. glossary-term'). hide(); $ (window.location.hash) .show(); window.location.hash = ""; $ (finestra) .scrollTop (0); }); – Majki

Problemi correlati