0

ユーザーが表示しているページの URL を参照するリンクをアクティブにする必要があります。それは問題ではありません。問題は URL のクエリ文字列に関するものです。関連する回答を見てさまざまな解決策を試しましたが、リンクをクリックしたときにのみリンクが色を取得し、その後すぐに以前と同じ色に戻るだけです。

私はprestashopに取り組んでおり、このメニューはモジュールがインストールされており、この小さな問題がなければ完全に機能しています.

これが HTML です (javascript が含まれています)。モジュールは、smarty が取得してコンパイルするために XML ファイルに送信されます。

<div class="left_nav">
    <h3>VIAGGIA CON NOI</h3>
    <ul class="left_list">
        <li><a href="../../cms.php?id_cms=10">I nostri viaggi spiegati</a></li>
        <li><a href="../../cms.php?id_cms=11">Vostro viaggio su misura</a></li>
        <li><a href="../../cms.php?id_cms=12">Attività ed estensioni </a></li>
        <li><a href="../../cms.php?id_cms=17">Turismo accessibile</a></li>
        <li><a href="../../cms.php?id_cms=18">Collaborare con noi</a></li>
    </ul>

    <h3>DICONO DI NOI</h3>
    <ul class="left_list">
        <li><a href="../../cms.php?id_cms=19">I nostri viaggiatori</a></li>
        <li><a href="../../cms.php?id_cms=20">Stampa e altri media</a></li>
    </ul>
</div>

<script type="text/javascript">// <![CDATA[
    $(function() {
        var filename = window.location.href.substr(window.location.href.lastIndexOf("/") + 1);
        $('ul.left_list li a[href*=" + filename + "]').each(function() {
            if (window.location.href.indexOf($(this).find('a').attr('href'))) {
                $(this).addClass('active').siblings().removeClass('active');
            }
        });
    });
// ]]></script>

これを機能させる方法を知っている人はいますか?

4

3 に答える 3

0

このjqueryコードで試してください:

$(function()
 {
    $('.left_list li a').each(function(){
        loc= window.location.pathname;
        path=$(this).attr('href');
        alert(loc+'-'+path);

        if(loc==path)
        {
           alert('ok');
           $(this).addClass('active');
        }
    });
});

リンク内とページ内の href の違いを確認するためのアラートをいくつか追加しました。これにより、どこが異なるかがわかります。(私は別のリンクでコードをテストし、動作します)

于 2013-02-05T10:16:50.037 に答える
0

これが必要だと思います:http://jsbin.com/amucep/2/edit

$(function() {
   var winurl = window.location.href;
   var url = winurl.substr(winurl.lastIndexOf('/')+1);

   $('ul.left_list li a').each(function() {
      $('ul.left_list li a[href$="'+url+'"]').addClass('active');   
   });
});
于 2013-02-05T10:23:27.507 に答える
0

エスケープするのを忘れたことに気付きました:

 $('ul.left_list li a[href*="'+filename+'"]').each(function()
                             ^ here      ^here
于 2013-02-05T09:58:10.163 に答える