0

我正在使用 javascript 突出显示我的菜单项,但它突出显示了主页中的所有菜单项,其余页面工作正常。

  1. 我的JavaScript:

    $(function () {
        var url = window.location.href.substr(window.location.href.lastIndexOf("/") + 1);
        $('[href$="' + url + '"]').parent().addClass("current_page_item");
    });
    
  2. 我的主菜单:

    <div id="menu" class="container">
        <ul>
            <li class="current_page_item"><a href="Home.aspx" accesskey="1" title="">Home</a></li>
            <li><a href="Softcare/SoftcareHome.aspx" accesskey="2" title="">Softcare</a></li>
            <li><a href="Softlearn/SoftlearnHome.aspx" accesskey="2" title="">Softlearn</a></li>
            <li><a href="Software/SoftwareHome.aspx" accesskey="2" title="">Software</a></li>
        </ul>
    </div>
    
  3. 我的侧边菜单:

    <div id="sidemenu">
        <div class="section-title">
            <asp:ContentPlaceHolder ID="submenutitle" runat="server">
            </asp:ContentPlaceHolder>
        </div>
        <ul>
            <li><a href="Home.aspx" accesskey="1" title="">Home</a></li>
        </ul>    
    </div>
    

同样,只有我的主页遇到这个问题,我认为这是因为主页的父级是 ~/,这就是为什么它将 current_page_item 类添加到所有菜单项,包括子菜单项。所以我认为这是我的 javascript 在我的主页上无法正常工作。

PS。我试图从 javascript 中删除 parent() 并没有帮助

提前致谢。

4

2 回答 2

0

您使用的选择器有点问题。在主页上是

$('[href$=""]')

我的意思是,如果您在没有Home.aspx的情况下打开您的网站。只是域名。

这意味着 *get 所有以 href 结尾的元素为空字符串。我想这可以捕获每个链接。

如果添加怎么办

if(url == "") {
   $("#menu li").removeClass("current_page_item");
}
于 2013-08-31T16:59:09.227 回答
0

你可以使用这样的小技巧:

$(function () {
    var url = '/' + window.location.href.substr(window.location.href.lastIndexOf("/") + 1);
    $('[href$="' + url + '"]').parent().addClass("current_page_item");
});

并确保所有 URL 都以/开头:

<div id="menu" class="container">
    <ul>
        <li class="current_page_item"><a href="/Home.aspx" accesskey="1" title="">Home</a></li>
        <li><a href="/Softcare/SoftcareHome.aspx" accesskey="2" title="">Softcare</a></li>
        <li><a href="/Softlearn/SoftlearnHome.aspx" accesskey="2" title="">Softlearn</a></li>
        <li><a href="/Software/SoftwareHome.aspx" accesskey="2" title="">Software</a></li>
    </ul>
</div>
于 2013-08-31T17:08:27.393 回答