2

みんな!

私はこのメニューを持っています:

  <ul id="navigation">
      <li><a href="index.php">Home</a></li>
      <li><a href="index.php?page=Entidad">Entidad</a></li>
  </ul>

jQueryを使用すると、メニュー項目がクリックされたときにクラス.activeを次のように適用しようとしています。

  $(document).ready(function(){
      $("li a").click(function(){
           $(this).parent().find("li").addClass('active');   
      });
  });

うまくいきません、助けてくれませんか?

4

4 に答える 4

1

parentはそれ自体なので、 liする必要はありませんalifind

ライブデモ

$(document).ready(function(){
      $("li a").click(function(){
           $(this).parent().addClass('active');   
      });
});

編集前の要素からクラスを削除し、現在の要素に追加するには

ライブデモ

$(document).ready(function(){
      $("li a").click(function(event){
           $('#navigation li').removeClass();
           $(this).parent().addClass('active');
      });
});
于 2013-03-19T10:16:37.080 に答える
1

のクリックを処理するときali親アイテムなので、次のようにします。

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

リンクをアクティブにするのが賢明だと思っていたので、これを確信していますか?ただの観察。

于 2013-03-19T10:16:43.360 に答える
1

ハイパーリンクをクリックするとページが更新されるため、このコード$(this).parent().addClass('active')は機能しません。

代わりにこれを試してください:

$(function() {
                var page = getParameterByName('page');
                $("#navigation a:contains('" + page + "')").parent().addClass('active');
            });

            function getParameterByName(name)
            {
              name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
              var regexS = "[\\?&]" + name + "=([^&#]*)";
              var regex = new RegExp(regexS);
              var results = regex.exec(window.location.search);
              if(results == null)
                return "Home";
              else
                return decodeURIComponent(results[1].replace(/\+/g, " "));
            }
于 2013-03-19T11:00:38.297 に答える
0

それはただ

$(this).parent().addClass('active'); //  $(this).parent() selects list element

そこで再びli要素を見つける必要はありません。

于 2013-03-19T10:18:44.387 に答える