0

次を含むメニューリストがあります。

<ul class="content_menu tabs">
        <a href="#" name="content_1" class="tab active"><li class="pager_link_0_active"></li></a>
        <a href="#" name="content_2" class="tab"> <li class="pager_link_1"></li></a>
        <a href="#" name="content_3" class="tab"><li class="pager_link_2"></li></a>
        <a href="#" name="content_4" class="tab"><li class="pager_link_3"></li></a>
        <a href="#" name="content_5" class="tab"><li class="pager_link_4"></li></a>
        <a href="#" name="content_6" class="tab"><li class="pager_link_5"></li></a>
        <a href="#" name="content_7" class="tab"><li class="pager_link_6"></li></a>
        <a href="#" name="content_8" class="tab"><li class="pager_link_7"></li></a> 
        <a href="#" name="content_9" class="tab"><li class="pager_link_8"></li></a>                                              
</ul>

私がしたいのは、特定のリンクがクリックされたときです。アクティブを含むliクラス名からアクティブを削除し(pager_link_0_activeなど)、クリックされたliにアクティブを追加する必要があります(pager_link_2_activeなど)。

私はそれを作る1つの方法があることを知っています:

$(".active").removeClass("active");

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

しかし、私の状況では、アクティブは区切られておらず、クラス名の一部です。

4

2 に答える 2

1

標準によれば、ulには要素のみを含めることができますが、次の方法で必要なものを実現できます。

        $(function () {
            $('ul.content_menu.tabs a.tab').click(function () {
                var newActive = $(this);

                if (newActive.hasClass('active')) {
                    return;
                }

                var oldActive = $('ul.content_menu.tabs a.tab.active');
                oldActive.removeClass('active');
                var oldIndex = $('ul.content_menu.tabs a.tab').index(oldActive);
                oldActive.children().attr('class', 'pager_link_' + oldIndex);

                var newIndex = $('ul.content_menu.tabs a.tab').index(newActive);
                newActive.addClass('active');
                newActive.children().attr('class', 'pager_link_' + newIndex + '_active');
            });
        });

これがフィドルです

于 2012-08-01T10:28:06.767 に答える
0

別のクラス<li class="pager_link_1 pager_active">にすることをお勧めします。そうすれば、pager_activeを簡単に削除および追加できます。

LIに常に1つのクラスしかない場合は、次のことを試してください。

var active_li = $(".active li");
var active_class = active_li.attr("class");
active_li.attr("class", active_attr.replace("_active", "");
var this_li = $(this).children("li");
var this_class = this_li.attr("class");
this_li.attr("class", this_class+"_active");
于 2012-08-01T10:08:36.413 に答える