具有锚点到另一页面和ID的菜单不起作用

时间:2017-10-30 11:31:58

标签: javascript php jquery html wordpress

我第一次面对这个奇怪的问题。 可能是一件非常容易的事,但我无法离开。

如果您打开此页面中的菜单: https://danielepinazzi.com/fabric/

并且您尝试使用锚链接导航到该页面,它完美无缺。

如果您打开“与我们联系”页面,然后尝试单击菜单中的其他链接,例如“我们做什么”,它将关闭菜单并且不执行任何操作。但是,如果您尝试右键单击并选择“在新选项卡中打开”,则可以正常工作。

编辑,因为我需要更好地解释: 我已经在菜单中添加了绝对链接,而不仅仅是锚点。 #whatwedo部分与https://danielepinazzi.com/fabric/#whatwedo

相关联

我在Mac上使用Chrome。

有人可以向我解释一下吗?

谢谢你,祝大家度过愉快的一天。

2 个答案:

答案 0 :(得分:0)

您可能已经通过#link这样的菜单添加了锚点链接。这些链接仅在您放置这些锚点的页面上有效。如果您希望它们在另一个页面上工作,则应将其添加为/fabric/#link,因为项目的主页为/fabric/

注意:如果您在菜单中使用绝对网址(即https://danielepinazzi.com/fabric/#whatwedo而不仅仅是#whatwedo,这是最简单的。如果您迁移到的话,请不要忘记更新这些网址生产环境。

答案 1 :(得分:0)

我检查了那里发生的事情,你有一个如下所述的代码块;

当我按照你在问题上所说的那样做时,isSamePage返回true,因为你在href变量上分割锚标记

$this.attr("href").split("#")[0]

并返回已经在网址中的 https://danielepinazzi.com/fabric/

根据代码使isSamePage为true并阻止该操作。

    $(".mk-fullscreen-nav-close, .mk-fullscreen-nav-wrapper, #fullscreen-navigation a").on("click", function(e) {
        $(".mk-fullscreen-nav").removeClass("opened"),
        $(".mk-dashboard-trigger").removeClass("fullscreen-active"),
        $("body").removeClass("fullscreen-nav-opened");
        var anchor = MK.utils.detectAnchor(this)
          , $this = $(this)
          , href = $this.attr("href").split("#")[0]
          , url = window.location.href
          , isSamePage = -1 !== url.indexOf(href);
        anchor.length ? (isSamePage && e.preventDefault(),
        MK.utils.scrollToAnchor(anchor)) : "#" === $this.attr("href") && e.preventDefault()
    })