2012-05-16 5 views
10

Mögliche Duplizieren:
jquery - disable anchor “jump” when loading a pageVermeiden Sie die Seite Scrollen/Springen als Anker in der URL ist

Ich bin ein div auf dem Hash-Wert in einer URL in Abhängigkeit anzeigt, aber ich will um zu vermeiden, dass die Seite mit dieser bestimmten ID zu der Position dieses Divs springt.

Ich habe nur das Problem, wenn die Seite mit dem Hash direkt in der URL, so zum Beispiel sagen, navigiert wird, wenn jemand Buch der Seite markiert hat.

So zum Beispiel habe ich die URL domain.com/page.html#myitem-1

ID = MyItem-1 wird dann angezeigt, was es tut, aber die Seite springt dann, dass auf die Postion nach unten div was ich nicht will.

Ich versuche scrollTop (0) zu zwingen, die Fensterposition nach oben zu verwenden, aber es scheint, als ob diese aufgerufen wird, bevor der Anker Sprung stattfindet, zu hat keine Auswirkung

Beispielcode:

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

    $(window).scrollTop(0); 

}); 

Die einzige Möglichkeit, diese ScrollTop zu arbeiten, war es in eine setTimeOut mit einer Dauer von 1 zu setzen, aber das scheint ein bisschen wie ein Hack. Irgendwelche anderen Vorschläge?

Dank

B

+0

Danke Jungs dachten, die abstimmen Klick war genug. Ein paar Antworten, die nicht wirklich geholfen haben, ignoriere ich sie einfach? Ich habe normalerweise mit einem Kommentar geantwortet, aber keine Folge. Danke noch einmal. – Ben

+0

Hallo Ben, wie hast du es gelöst pls? Das selbe Problem, das ich habe –

Antwort

7

Nun, wenn es Ihre internen Mechanismus für Anker nur für die Anzeige von divs verwenden Sie immer (oder entfernen) ändern können die „name“ -Attribut damit der Browser es nicht finden direkt und versuchen, nicht zu blättern;)

versuchen Ansonsten How to disable anchor "jump" when loading a page?

+0

Danke für die Antwort, dort ist wirklich kein Namensschild, es springt dort, weil der DIV die ID davon hat. Ich denke, genaugenommen handelt es sich nicht um einen Anker, sondern um dieselbe Funktionalität. Ich möchte die IDs beibehalten, da sie sich dadurch stark verschlechtert, wenn JS deaktiviert ist. Der Link sieht so aus, als würde er dieselbe Idee verwenden, die ich mit setTimeOut versucht habe, aber er ist wie ein kleiner Hack, vielleicht nicht und nur so weit weg. – Ben

+0

Nun, wenn Sie einen Anker setzen der Browser wird versuchen, es zu folgen, so müssen Sie es irgendwie hacken .. Und haben Sie versucht, Ihre Anker beim Laden der Seite zurückgesetzt? Wie bei 'window.location.hash = "";' oder 'window.location.hash = "top";' – Majki

+0

Und haben Sie versucht, Ihren Anker beim Laden der Seite zu löschen? Wie bei 'window.location.hash = "";' oder 'window.location.hash = "top";' $ (Document) .ready (function() { $() hide() 'Glossar-Begriff.';. $ (window.location.hash) .show(); window.location.hash = ""; $ (Fenster) .scrollTop (0); }); – Majki

Verwandte Themen