Выделите идентификатор фрагмента на новой странице при загрузке с JQuery? - PullRequest
1 голос
/ 03 марта 2011

Я пытаюсь выяснить, возможно ли иметь какую-то простую разметку HTML, например, так:

<a href="www.mysite.com/pageXXX#location1"></a>
<a href="www.mysite.com/page1#location1"></a>
<a href="www.mysite.com/page2#location1"></a>
<a href="www.mysite.com/page3#location1"></a>

... и затем прокрутить вниз до идентификатора #location1, когда новая страница загружается с каким-нибудь простым JQuery-скриптом?Или, если это то, что может быть достигнуто с помощью плагина scrollTo, как я могу это сделать вместо этого?

Проблема в том, что ссылка существует на pageXXX, а ID, на который нужно прокрутиться, находится на ВСЕХ страницах,то есть.pageXXX, page1, page2, page3 и т. д. ...... В идеале, если есть также способ удалить хэш-метку и идентификатор из URL, который тоже был бы великолепен, но на данный момент простоплавная прокрутка вниз до идентификатора на новой странице - все, что мне нужно.

Ответы [ 2 ]

7 голосов
/ 03 марта 2011

Вы можете добавить setTimeout, чтобы он немного подождал, а затем прокрутил вниз?

function goToByScroll(id){
        $('html,body').animate({scrollTop: $("#"+id).offset().top},'slow');
}
var hash = window.location.hash;

setTimeout(function(){
      goToByScroll(hash);
},2000);
0 голосов
/ 05 июля 2011

Альтернатива:

Вместо

<a href="www.mysite.com/pageXXX#location1"></a>

Попробуйте

<a href="www.mysite.com/pageXXX?location1"></a>

Вы можете получить хеш для ссылки таким образом:

var nothash = window.location.search;
var hash = nothash.substring(1);

Ссылка: https://developer.mozilla.org/en/DOM/window.location

Здесь вы не допускаете ошеломления страницы в любом месте и можете делать следующие шаги (помещая хэш в функцию анимированной прокрутки), не беспокоясь о том, достаточно ли быстро она запускается.

...