0

URL パスを取得してから、li の例にアクティブなクラスを追加しようとしました: www.mysite.com/?p=xxxx

x は、ユーザーがクリックしたリンクに応じて変化します

私はこれを試しました:

<ul class="top_menu">
<li class="tider"><a href="/?p=1884">Åbningstider</a></li>
<li class="butikker"><a href="/?p=1885">Butikker</a></li>
<li class="sker"><a href="/?p=1886">Det sker</a></li>
<li class="nyhedsbrev"><a href="/?p=1887">Nyhedsbrev</a></li>
<li class="vej"><a href="/?p=1888">Find vej</a></li>
</ul>

var text = window.location.href.match(/http:\/\/www\.mysite\.com\/(.+)/)[1].replace(/_/g,' ');
$("#nav li").filter(function() {
  return $.text([this]) == text;
}).addClass("active");

しかし、何も起こりません。私は何を間違っていますか?

4

3 に答える 3

7

これはうまくいきます!

$(document).ready(function(){

    var full_path = location.href.split("#")[0];

    $(".top_menu li a").each(function(){

        var $this = $(this);

        if($this.prop("href").split("#")[0] == full_path) {

            $(this).parent().addClass("active");

        }

    });

});
于 2012-08-03T06:29:43.330 に答える
1

属性セレクターで端を使用できます。

var pid = '1885'; //Get the current value of p
$('#nav li a[href$="'+pid+'"]').parent().addClass('active');

これにより、href 属性が終了するリンクが取得されますpid(この場合は 1885)。

同じ文字列で終わる 2 つの値がある場合 (p=1885と などp=11885)、問題が発生します。

于 2012-08-02T07:57:51.313 に答える
0

クラス名を変更してPHPとjQueryを使用するのはどうですか?

<?php

if(isset($_GET['p'])) {

    echo '<script type="text/javascript">
    $(document).ready(function(){';

    $from_url = $_GET['p'];

    echo '
    $(\'p_' . $from_url . '\').addClass(\'active\');
        });
    </script>';
    }

?>

たとえば、「www.mysite.com/?p=1888」では、上記は次のように出力されます。

<script type="text/javascript">
$(document).ready(function(){
    $('.p_1888').addClass('active');
    });
</script>

クラス名「p_1888」のHTMLにクラス「active」を追加します。例えば:

<li class="p_1888"><a href="/?p=1888">Find vej</a></li>

ここでも説明します。

于 2012-08-02T08:03:09.343 に答える