简体   繁体   English

使用 jQuery 从多个元素中添加和删除 Class

[英]Add and Remove Class from multiple elements with jQuery

I have a tab navigation that sits above and below a block of content.我有一个标签导航,位于内容块的上方和下方。 I want the active tab to be highlighted by using the class active-tab .我希望使用 class active-tab突出显示活动选项卡。 By default, the first tab is the active tab.默认情况下,第一个选项卡是活动选项卡。 When clicking on one of the other tabs, I want that tab to be highlighted as the active tab.单击其他选项卡之一时,我希望该选项卡突出显示为活动选项卡。

My HTML structure looks like this我的 HTML 结构看起来像这样

<ul class="tab-navigation">
    <li class="tab active-tab" rel="tab1">First tab</li>
    <li class="tab" rel="tab2">Second tab</li>
    <li class="tab" rel="tab3">Third tab</li>
</ul>
<div>
    <div class="tab_container">
        <div id="tab1" class="tab_content">Some Content</div>
        <div id="tab2" class="tab_content">Some Content</div>
        <div id="tab3" class="tab_content">Some Content</div>
    </div>
</div>
<ul class="tab-navigation">
    <li class="tab active-tab" rel="tab1">First tab</li>
    <li class="tab" rel="tab2">Second tab</li>
    <li class="tab" rel="tab3">Third tab</li>
</ul>

The jQuery code looks like this: jQuery 代码如下所示:

$(".tab_content").hide();
$(".tab_content:first").show();

$("ul.tab-navigation li").click(function() {
    
    $(".tab_content").hide();
    var activeTab = $(this).attr("rel"); 
    $("#"+activeTab).fadeIn();      
    
    $("ul.tab-navigation li").removeClass("active-tab");
    $(this).addClass("active-tab");
    
});

The jQuery code above works but it only adds and removes the active-tab class for the tab navigation that was used.上面的 jQuery 代码有效,但它只添加和删除了用于使用的选项卡导航的active-tab class。 If I use the navigation above the content, it will only change the class for the tabs above the content but not for the ones below.如果我使用内容上方的导航,它只会更改内容上方选项卡的 class 而不会更改下方的选项卡。 However, I want it to update the class on both.但是,我希望它在两者上都更新 class。

As you are getting rel value you can use this as a selector to add active class to required divs ie: $(".tab-navigation li[rel="+activeTab+"]") .当您获得rel值时,您可以使用它作为选择器将活动 class 添加到所需的 div 即: $(".tab-navigation li[rel="+activeTab+"]")

Demo Code :演示代码

 $(".tab_content").hide(); $(".tab_content:first").show(); $("ul.tab-navigation li").click(function() { $(".tab_content").hide(); var activeTab = $(this).attr("rel"); $("#" + activeTab).fadeIn(); $("ul.tab-navigation li").removeClass("active-tab"); //add class where rel matches $(".tab-navigation li[rel=" + activeTab + "]").addClass("active-tab"); });
 .active-tab { color: red }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <ul class="tab-navigation"> <li class="tab active-tab" rel="tab1">First tab</li> <li class="tab" rel="tab2">Second tab</li> <li class="tab" rel="tab3">Third tab</li> </ul> <div> <div class="tab_container"> <div id="tab1" class="tab_content">Some Content1</div> <div id="tab2" class="tab_content">Some Content2</div> <div id="tab3" class="tab_content">Some Content3</div> </div> </div> <ul class="tab-navigation"> <li class="tab active-tab" rel="tab1">First tab</li> <li class="tab" rel="tab2">Second tab</li> <li class="tab" rel="tab3">Third tab</li> </ul>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM