jquery转到页面加载锚点

时间:2016-06-06 11:53:17

标签: javascript jquery wordpress

我有一个WordPress网站和锚点的问题。我有一个页面,其中有几个锚点链接到主菜单中。当我在页面本身时,所有锚点工作正常,但如果我在任何其他页面上,它们不起作用,至少不是在所有浏览器中,并且锚点被忽略。

当被告知这是一个铬虫,我发现了这个解决方案:

<script type="text/javascript">

jQuery(window).load(function(){
    var hashNum = 0;
    if (window.location.hash != ''){
        hashNum = window.location.hash.replace("#oneofmanyanchors", "");   
        console.log('hashNum: ' + hashNum); 
    };
    hashMenu = jQuery('[data-q_id="#oneofmanyanchors"]').offset().top;
      jQuery('html,body').animate({
          scrollTop: hashMenu
    }, 0);

});

 </script>

上面的代码正在运行并解决了我在chrome和ff中遇到的问题。

然而我需要这个增加的功能:目前它只处理一个特定的锚点,但是我需要它来处理页面url中的任何锚点,而不仅仅是上面的锚点(锚点用data-q_id属性引用) )。

所以代码需要更新,它从页面URL抓取任何给定的锚点,并在第一页加载后通过jquery转到/滚动到该锚点(一次)。

我如何实现这一目标?

提前致谢!

PS:问题是由于主题与我需要的某个插件不兼容而引起的......

1 个答案:

答案 0 :(得分:0)

我认为这应该适用于所有浏览器 - 问题恰巧是什么?

为了在jquery中实现这一点,你应该在文档加载后立即使用javascript滚动到元素/锚点。

所以这样:

$(function() {
   location.hash = "#" + hash;
});

我仍然认为你应该找出问题所在,以及在使用问题的解决方法之前,为什么来自其他页面的链接在某些浏览器中不起作用。你的代码会变得越来越混乱。

How to scroll HTML page to given anchor using jQuery or Javascript? 和这里 $(document).ready shorthand