jQuery scrollTop arbeitet nicht mit Querystring-Link

8

Ich habe eine Navigation und die ursprüngliche URL sieht so aus:

test.php?query=19

und ich habe Links auf meiner Seite wie so <a href="#section-1">Section 1</a><a href="#section-2">Section 2</a><a href="#section-3">Section 3</a>

mit 3 Abschnitten:

%Vor%

und ich verwende diesen jquery-Code, um zu dem Abschnitt vom oberen Rand der Seite (oder wo sich der Benutzer auf der Seite befindet) zum Anfang dieses Abschnitts zu blättern und nicht das # -Tag in meiner URL anzuzeigen.

%Vor%

Mein Problem ist, dass hier nicht zum Abschnitt geblättert wird. Es geht nur zum Abschnitt unten im Abschnitt und scrollt dann nach oben und das # erscheint in meiner URL.

Ich habe ein anderes Menü auf meiner Hauptseite:

home.php und ich benutze den exakt gleichen jquery Code und es funktioniert auf dieser Seite.

Meine Frage ist, wie ich den ScrollTop in meiner test.php?query=19 Seite funktionieren lassen kann, so wie er es bei home.php tut. Wenn ich auf ein Like auf test.php?query=19 klicke, ändert sich meine URL in: test.php?query=19#section-1

    
user979331 17.06.2015, 14:03
quelle

2 Antworten

2

1. Verwenden Sie e.preventDefault(); , um zu verhindern, dass Ihr Code # in Ihrem aktuellen url

hinzufügt

Sie können diesen Code auch verwenden, um zu einem bestimmten Abschnitt auf einer beliebigen Seite zu scrollen:

HTML:

%Vor%

SCRIPT:

%Vor%

DEMO: Ссылка

Ссылка

    
PHP Worm... 09.07.2015 10:30
quelle
1

Ich würde die Logik ändern, die Sie mit Ihrem Code umgehen. Verhindern des Standardereignisses und direkten Zugriff auf href direkt durch attr.

In etwa so:

%Vor%

Übrigens bin ich mir nicht sicher, ob Sie den von Ihnen verwendeten Selektor a[href*=#]:not([href=#]) verstehen. Auch die Bedingung ( if location.pathnae.blah... ) scheint ziemlich peinlich zu sein. Ich würde einfach so etwas tun:

%Vor%     
viarnes 07.07.2015 19:30
quelle

Tags und Links