0

クリックしたアイテムのクラスを次のように変更する必要があるliアイテムがあります

  • デフォルトのクラスから現在のクラスを削除します
  • クリックしたクラスに現在のクラスを追加します

ここに私のhtmlコード

                <ul class="filter">
                <li><a href="#" title="" class="current">recent</a></li>
                <li><a href="#" title="">top popularity</a></li>
                <li><a href="#" title="">top commented</a></li>
                <li><a href="#" title="">other ...</a></li>

            </ul>

これがその仕事をするためのjqueryコードです

      $(".filter > li a").click(function(){

      $(".filter li a.current").removeClass("current");
        $(this).addClass("current");
      });

それ以外の場合は完璧に機能します。他のリンクをクリックすると、そのコードが適用されます。このコードはul.filterにのみ適用する必要があります。

4

4 に答える 4

3

おそらくこれはもっと簡単で簡単でしょう。それが行うことは、兄弟の現在のクラスを削除し、それ自体に新しい現在のクラスを追加することです。

$('.filter a').click(function(){
  $(this).addClass('current').siblings().removeClass('current');
});
于 2012-04-04T01:16:31.753 に答える
1

:not()を使用して、現在のアイテムを省略します

   $(".filter > li a").not(".current").on('click', function(){
       if(!$(this).hasClass("current")) {
           $(".filter").find("a.current").removeClass("current");
           $(this).addClass("current");
           alert($(this).html());
       }
   });

デモ

于 2012-04-04T00:29:08.063 に答える
1

このスニペットはあなたのために働くはずです!

$('.class a').on('click', function(){
  $('.class a').removeClass('current');
  $(this).addClass('current');
});
于 2012-04-04T01:10:53.613 に答える
0

クリック処理をul.filter内でのみ発生させたい場合は、それを反映するようにセレクターを更新する必要があります。

$("ul.filter > li a")

それよりも

$(".filter > li a")

「filter」クラスを持つul要素が複数あり、そのうちの1つにのみ機能を適用する場合は、その特定のulにidを指定し、そのidを使用するようにセレクターを変更する必要があります。

于 2012-04-04T00:33:35.733 に答える