Javascript 使菜单项转到主页,然后滚动至div

Javascript 使菜单项转到主页,然后滚动至div,javascript,jquery,html,scroll,menuitem,Javascript,Jquery,Html,Scroll,Menuitem,在我的主页上,我有一系列的Div,里面有内容。用户可以使用菜单项快速导航到div,单击菜单项会将页面滚动到相关div。使用链接“Beast Balls”(.Beast Balls)和该链接的相关div(.cat Beast Balls),该功能的代码如下所示: $( '.beast-balls' ).on( "click", function() { $('html,body').animate({ scrollTop: (($( ".cat-beast-balls" )

在我的主页上,我有一系列的Div,里面有内容。用户可以使用菜单项快速导航到div,单击菜单项会将页面滚动到相关div。使用链接“Beast Balls”(.Beast Balls)和该链接的相关div(.cat Beast Balls),该功能的代码如下所示:

$( '.beast-balls' ).on( "click", function() {
    $('html,body').animate({
        scrollTop: (($( ".cat-beast-balls" ).offset().top) - 150)
    }, 1000, scrollHandler2);
});
所以我的问题是,当用户在主页上而不是时,我希望用户能够单击.beast balls链接,重定向到主页,然后滚动到.cat beast balls div

我怎样才能做到这一点呢?

谢谢

对“.on”方法了解不多,但尝试使用$(“body”)而不是$(“html,body”)。如果它不起作用,很抱歉
此外,请确保此“滚动:顶部”有效,从未听说过它

您不能将单击事件转到其他类似的页面。您应该使用锚定来访问此内容,并覆盖锚定的默认事件:

 <a class="nav-link" href="#cat1">Section 1</a>
 <a class="nav-link" href="#cat2">Section 2</a>

 <div class="section" id="cat1">
    Section 1
 </div>

 <div class="section" id="cat2">
    Section 2
 </div>

您应该使用锚的另一个原因是,如果JS失败,您的内容仍然会像往常一样导航,而不会产生效果。通过类链接到节会消除此功能,并使其成为一个可访问性问题。

我建议,通过url传入一个变量。 然后,在您的主页脚本中,在页面加载后,获取该变量,然后使用它触发对这些菜单项的单击,以确定它们需要转到哪个部分


哦,我想我现在明白了。用户离开站点的另一页后,是否要访问主窗口并设置其动画。正当您不应该使用a标记访问其他页面。您应该尝试将.beastball设置为链接的样式。然后,使用jquerys open(“www.siteName.com”,“WinName”)方法打开您的主页url。确保将其记录为Home=open(“URL”、“Home”)之类的变量,然后


定位Home.location,而不是在动画中使用location。如果我没有帮助你,我真的很抱歉:(

嗨,伊桑,这没什么区别。正如问题所述,“当用户不在主页上时”因此,如果他们不在主页上,答案需要将他们重定向到主页,然后滚动到内容。你是否通过url传递了任何变量?比如,www.whather.com/beast balls……是否可以向div添加唯一的锚,然后直接指向类似的站点。com/home 35; anchorth理论上看起来不错!但在实现时,我得到了答案g每当我单击.nav链接项ahhh时,就会出现错误“UncaughtTypeError:无法读取undefined的属性'top'”,如果是由AJAX加载的,会有什么不同吗?很高兴听到!想要对其进行编码打开/jsfiddle,但您无法检查这些工具上的哈希值。希望错误少且远。
<a href="home.html#cat1">Go to section on home</a>
function pageScroll(section) {
    $('html,body').animate({
        scrollTop: (($(section).offset().top) - 150)
    }, 1000, scrollHandler2);
}

function checkHash(){
    var hash = window.location.hash;

    if(hash){
        $(window).scrollTop(0);
        pageScroll(hash);
    }
}

$( '.nav-link' ).on( "click", function(e) {
    var location = $(this).prop('hash'); // Get Anchor
    e.preventDefault(); // Prevent browser from going to that anchor
    pageScroll(location);
});

// Assumes you have a class of 'home' on your body or somewhere on the page, so you only run this on the home page
if($('.home').length > 0){
    checkHash();
}