【问题标题】:Click on menu item redirects to undefined单击菜单项重定向到未定义
【发布时间】:2015-03-17 17:25:24
【问题描述】:
<li class="dropdown navbar-li col-md-3 col-sm-3">
    <a href="<%= ESRBOrg.Core.Common.PublisherConfigurationManager.Navigation %>index.aspx" class="dropdown-toggle navPadding">PUBLISHERS</a>
    <ul class="dropdown-menu col-md-12 col-sm-12  navbar-submenus"role="menu">
        <li><a href="<%= ESRBOrg.Core.Common.PublisherConfigurationManager.Navigation %>Getting_Rated/Index.aspx">Getting a Game Rated</a></li>
        <li><a href="<%= ESRBOrg.Core.Common.PublisherConfigurationManager.Navigation %>ratings/index.aspx">Rating Certificate Updates</a></li>
        <li><a href="<%= ESRBOrg.Core.Common.PublisherConfigurationManager.Navigation %>ArcManual.aspx">Advertising &amp; Marketing <BR />Guidelines</a></li>
        <li><a href="<%= ESRBOrg.Core.Common.PublisherConfigurationManager.Navigation %>Library.aspx">Downloads</a></li>
        <li><a href="<%= ESRBOrg.Core.Common.PublisherConfigurationManager.Navigation %>ratings/enforcement.aspx">Enforcement</a></li>
        <li><a href="<%= ESRBOrg.Core.Common.PublisherConfigurationManager.Navigation %>about/contact.aspx">Contact ESRB</a></li>
        <li><a href="<%= ESRBOrg.Core.Common.PublisherConfigurationManager.Navigation %>PreClearance.aspx">ARC Pre-Clearance</a></li>
    </ul>
</li>

当我将鼠标悬停在&lt;a&gt; 标签上并单击时 - 一切正常。 但是&lt;a&gt; 并没有涵盖所有&lt;li&gt; 元素(我添加了填充)。当我点击填充区域时,我被重定向到未定义。

如何在不更改现有页面样式的情况下解决此问题(不要删除填充)?

一些难以复制的例子http://jsfiddle.net/v3ng6zqh/

我在代码中几乎找不到的 Js 脚本:

    $(document).ready(function () {
    $('li.dropdown').hover(function () {
        $(this).addClass("open");
    });

    $('li.dropdown').mouseleave(function () {
        $(this).removeClass("open");
    });

    $('li.dropdown').off("click");
    $('li.dropdown').on("click", function(e) {
        var navigate = $(this).hasClass("open");
        if (navigate) {
            window.location = $(this).find("a[data-toggle='dropdown']").prop("href");
        };
    });
});

【问题讨论】:

  • 嗯,点击一个 li 不应该做任何事情。是否涉及到您未显示的 JavaScript?
  • 您要将它们发送到哪个 URL?
  • @epascarello,所以我需要添加一些脚本来启用点击 li 标签?
  • 在上面的代码中,单击 LI 不应重定向窗口。我是说:代码中有什么东西在做吗?听起来有些东西正在监听 event.target 并关闭 href。
  • @epascarello,“代码中有什么东西在做吗?” - 好吧,我有 href 来做这个

标签: javascript jquery html css padding


【解决方案1】:

您可以向a 元素添加一个内边距,而不是li 内的内边距。稍微调整一下,看起来还是一样的,但a 会覆盖整个li

【讨论】:

  • 那行得通!但是,如果您是准确的,并且 OP 问题中的“不要删除填充”是强制性的,那么答案实际上应该是否定的 ;-)
  • 是的,当然是您的权利。我只是认为输入可能是有价值的。
【解决方案2】:

&lt;a&gt; 是一个内联元素。所以它不会覆盖整个li。为此,请使用以下 CSS:

.dropdown-menu li {
    position: relative;
}

.dropdown-menu li > a {
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}

并确保你没有在下拉菜单里应用任何填充,应用在下拉菜单里。

关于未定义的重定向,背后有一个 javascript 工作。把它贴在这里让我看到。

【讨论】:

【解决方案3】:

您可以尝试将操作直接绑定到包含ali,而不是父li。此外,没有必要检查是否有类open,因为它总是会有它(你在鼠标悬停和绑定鼠标单击时添加它)。试试这个代码:

$('ul.dropdown-menu li').on("click", function(e) {
  window.location = $(this).find("a").prop("href");
});

【讨论】:

  • 根据现有代码,我认为这是最简单的解决方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-31
  • 1970-01-01
相关资源
最近更新 更多