PHP & jQuery - 根据正文类或滚动顶部更改 href


PHP & jQuery - Change href depending on body class or scrolltop?

如果从主页(一页滚动网站)单击,我希望徽标的点击滚动到顶部(主页),如果在内部页面上,则徽标链接保留为站点URL。

我的客户基本上不希望网站在从主页单击徽标时重新加载。

最好的

方法是什么?到目前为止,我已经想到了两种方法...

  1. 将 href 属性替换为 url + body 类(我的菜单链接使用它并滚动到每个部分而无需重新加载页面)
  2. 如果在正文具有 .home 时单击徽标,请滚动到窗口顶部。但我不确定这是否会覆盖主题设置的网址?

这是如何从部分/菜单.php文件中设置徽标 href 的片段...

$logoDiv = '<a href="'.esc_url( home_url( '/' ) ).'" class="navbar-brand" data-minheight="'.(($LOGO->logo_min == "") ? "20" : esc_attr($LOGO->logo_min)).'">';

我在Wordpress上使用Uncode主题。我是PHP和jQuery的新手...只是一个建议作为解决此问题的最佳方法,我们将不胜感激,我可以尝试自己解决它!

谢谢:)

您可以使用

以下代码

$logoDiv = '<a href="javascript:void(0)" class="navbar-brand" data-minheight="'.(($LOGO->logo_min == "") ? "20" : esc_attr($LOGO->logo_min)).'" onclick="window.scrollTo(0,0);">';

希望对您有所帮助

您可以在呈现页面之前检查当前链接是否为主页:

$href = ($_SERVER["REQUEST_URI"]==home_url("","relative")?"#":esc_url( home_url( '/' ) ))
$logoDiv = '<a href="'.$href.'" class="navbar-brand" data-minheight="'.(($LOGO->logo_min == "") ? "20" : esc_attr($LOGO->logo_min)).'">';

如果您希望对滚动进行动画处理,则可以添加以下jQuery:

$("[href='#']").on("click", function (e) {
    e.preventDefault();
     $('html, body').animate({
        scrollTop: 0
     });
});

这将适用于所有带有href='#'的链接,如果您想限制它,则需要更具体的选择器。

正如您的评论所建议的,如果您有办法确定当前页面是否是主页,您也可以使用 jQuery 执行此操作。

您的解决方案应该可以正常工作:

$(document).ready(function() { 
    if($(body).hasClass("home")){ 
        $(".navbar-brand[href='ldngrp.co']").attr('href', '#'); 
     }
});