繁体   English   中英

PHP和jQuery-根据主体类或滚动顶部更改href?

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

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

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

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

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

这是片段/menus.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', '#'); 
     }
}); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM