Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery单页滚动,带有指向其他页面的链接_Javascript_Jquery_Html - Fatal编程技术网

Javascript jQuery单页滚动,带有指向其他页面的链接

Javascript jQuery单页滚动,带有指向其他页面的链接,javascript,jquery,html,Javascript,Jquery,Html,我有一个网站,它的大部分内容都是单页面样式,带有菜单链接,可以使用div ID作为锚(例如www.mydomain.com/#div ID)向下滚动页面。但是,还有一些额外的外部页面也链接在标题中 我遇到的问题是,当我在一个外部页面(例如,www.mydomain.com/page-1)上时,用于向下滚动主页的菜单链接不起作用(它们显示为www.mydomain.com/page-1/#div id) 我使用linkrel属性添加div ID,这样就不会与其他jQuery插件(如tabs)冲突

我有一个网站,它的大部分内容都是单页面样式,带有菜单链接,可以使用div ID作为锚(例如www.mydomain.com/#div ID)向下滚动页面。但是,还有一些额外的外部页面也链接在标题中

我遇到的问题是,当我在一个外部页面(例如,www.mydomain.com/page-1)上时,用于向下滚动主页的菜单链接不起作用(它们显示为www.mydomain.com/page-1/#div id)

我使用linkrel属性添加div ID,这样就不会与其他jQuery插件(如tabs)冲突


有没有办法解决我的问题,这样我就可以有滚动到页面的菜单项,但当我不在主页上时,“可滚动”菜单项链接回首页(和相关部分)。

代码片段提供了一个想法:

jQuery(document).ready(function($) {

    jQuery('a[href*=#]').click(function(e) {
            //main page found    
            if (document.location.pathname == "/") {
                e.preventDefault();
                var navHeight = jQuery('.header-site').height();
                var id = jQuery(this).attr('rel');
                var scrollTo = jQuery('#' + id).offset().top - navHeight;

                jQuery('html,body').animate({
                    'scrollTop': scrollTo
                }, 500);
            });
    }
});

由于它们都在主页上,请将您的HREF更改为以
/
开头:-

<a href="/#test">test</a>

我想你可以只检查域名或主页分隔符,如果点击事件是在那里触发的,只需通过else拦截即可。基本上是额外的条件来检查是否有外部页面。你能添加你的html代码吗?
<a href="/#test">test</a>
function scrollToSection(id) {

  var navHeight = jQuery('.header-site').height();
  var scrollTo = jQuery('#' + id).offset().top - navHeight;

  jQuery('html,body').animate({
    'scrollTop': scrollTo
  }, 500);
}

jQuery(document).ready(function($) {

  var isHomepage = window.location.pathname == '/';

  if (isHomepage && window.location.hash) {
    var id = window.location.hash.split('#')[1];
    scrollToSection(id);
  }

  jQuery('a[href^="/#"]').click(function(e) {

    if (isHomepage) {
      e.preventDefault();
      var id = $(this).attr('href').split('#')[1];
      scrollToSection(id);
    }

  });

});