锚标记链接到具有动画的不同页面上的ID

时间:2013-12-11 09:05:56

标签: javascript jquery html anchor

我有2页网站,我试图将第二页链接回第一页,其中div正在尝试使用。

<li class="menuitem">
    <a href="index.html#services">Go Back</a>
</li>

它转到带有id标记服务的div,并在地址栏上留下id标记。

我试图将它设置为动画并从地址栏中删除id标记。

这就是第1页的样子 -

<div id="home"></div>
<div id="about"></div>
<div id="gallery"></div>
<div id="services"></div>
<div id="contact"></div>

用于在同一页面中链接div的jquery -

$(function() {
    $('a[href*=#]:not([href=#])').click(function() {
        if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {
            var target = $(this.hash);
            target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
            if (target.length) {
                $('html,body').animate({
                    scrollTop: target.offset().top
                }, 1000);
                return false;
            }
        }
    });
});

3 个答案:

答案 0 :(得分:1)

使用window.location.hash,您可以读取和写入哈希值。因此,在页面加载时,您基本上可以执行以下操作:

$("html, body").animate({ 
   scrollTop: $('#'+window.location.hash).offset().top 
}, 1000);
window.location.hash='';

答案 1 :(得分:0)

加载后您无法修改网址,您必须使用您的请求

http://api.jquery.com/focus/

尝试使用cookie存储,然后使用jquery,您可以专注于那个

或使用javscript

window.onload=getloaded();
function getloaded() {    
      var g=document.URL ;
      if(g.indexOf('services')!=-1) {
          // focus on services
      }
}

或者像这样

$('html,body').animate({scrollTop:$("#your element").offset().top},'slow');

答案 2 :(得分:0)

只需使用

锚标记即可
href="my_page.html#my_anchor_name"

如果页面属于同一个域,它将滚动到页面my_anchor_name中id等于my_page.html的任何html元素。 如果您想在同一页面中进行链接,只需省略页面名称my_page.html