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を付けずにサイトを開いた場合です。ドメイン名だけです。

これは、* 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 に答える