使用 removeClass 从列表项单击锚点 link 中移除 class

Remove class from list-item on-click anchor link with removeClass

我在删除选项卡 2 列表项上的 class 单击时遇到问题。这些是带有显示内容的下划线的链接。

目前的代码相当接近,只需要一点点手就能看到我遗漏了什么。

<script type='text/javascript' src='/js/jquery/jquery.js?ver=1.12.4'></script>

HTML

<div class="mk-tabs">
    <ul>
        <li class="mk-tabs-tab"><a href="#">Tab 1</a></li>  
        <li class="mk-tabs-tab is-active"><a href="#">Tab 2</a></li>
    </ul>
    <div class="mk-tabs-panes">
        <div class="mk-tabs-pane">Tab Content 1</div>
        <div class="mk-tabs-pane is-active">Tab Content 2</div>
    </div>
</div>

jQuery

<script type="text/javascript">
    jQuery(document).ready(function($){
        $('.mk-tabs ul li a').click( function(){
            if ( $('.mk-tabs ul li').hasClass('is-active') ) {
                $('.mk-tabs ul li').removeClass('is-active');
            } 
            else {
                $('.mk-tabs ul li').removeClass('is-active'); 
            }
        });       
    });
</script>

jQuery(document).ready(function($){
        $('.mk-tabs ul li a').click( function(){
            if($($(this).parent()).hasClass("is-active")){
              $($(this).parent()).removeClass("is-active")
            }
            else
            {
              $(".mk-tabs-tab").each(function(){
                $(this).removeClass("is-active")
              })
              if(!$($(this).parent()).hasClass("is-active"))
                $($(this).parent()).addClass("is-active")
            }
            
        }); 
    });
.mk-tabs{
  display:flex
}
.is-active{
  background-color:red
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="mk-tabs">
    <ul>
        <li class="mk-tabs-tab"><a href="#">Tab 1</a></li>  
        <li class="mk-tabs-tab is-active"><a href="#">Tab 2</a></li>
        <li class="mk-tabs-tab"><a href="#">Tab 3</a></li>
        <li class="mk-tabs-tab"><a href="#">Tab 4</a></li>
    </ul>
</div>

两种不同的行为...

jQuery(function($){
  $('.mk-tabs').on('click', 'a', function(e){
    e.preventDefault();
    var container = $(this).closest('.mk-tabs');
    var currentTab = $(this).closest('.mk-tabs-tab');
    var currentIndex = currentTab.index();
    $(".mk-tabs-tab", container).not(currentTab).removeClass('is-active');
    currentTab.toggleClass('is-active');
    var panes = $('.mk-tabs-pane', container);
    panes.hide();
    if (currentTab.hasClass('is-active')) {
      panes.eq(currentIndex).show();
    }
    
  });
});
jQuery(function($){
  $('.mk-tabs2').on('click', 'a', function(e){
    e.preventDefault();
    var container = $(this).closest('.mk-tabs2');
    var currentTab = $(this).closest('.mk-tabs-tab');
    var currentIndex = currentTab.index();
    currentTab.toggleClass('is-active');
    $('.mk-tabs-pane', container).eq(currentIndex).show();
    var panes = $('.mk-tabs-pane', container);
    if (currentTab.hasClass('is-active')) {
      panes.eq(currentIndex).show();
    } else {
      panes.eq(currentIndex).hide();
    }
  });
});
ul {
  display: flex;
  list-style: none;
}
.mk-tabs-tab {
  padding: 5px 10px;
}
.mk-tabs-tab.is-active{
  background-color: red
}
.mk-tabs-pane {
  display: none;
}
.mk-tabs-pane.is-active {
  display: block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="mk-tabs">
    <ul>
        <li class="mk-tabs-tab"><a href="#">Tab 1</a></li>  
        <li class="mk-tabs-tab is-active"><a href="#">Tab 2</a></li>
        <li class="mk-tabs-tab"><a href="#">Tab 3</a></li>
        <li class="mk-tabs-tab"><a href="#">Tab 4</a></li>
    </ul>
    <div class="mk-tabs-panes">
        <div class="mk-tabs-pane">Tab Content 1</div>
        <div class="mk-tabs-pane is-active">Tab Content 2</div>
        <div class="mk-tabs-pane">Tab Content 3</div>
        <div class="mk-tabs-pane">Tab Content 4</div>
    </div>
</div>
<div class="mk-tabs2">
    <ul>
        <li class="mk-tabs-tab"><a href="#">Tab 1</a></li>  
        <li class="mk-tabs-tab is-active"><a href="#">Tab 2</a></li>
        <li class="mk-tabs-tab"><a href="#">Tab 3</a></li>
        <li class="mk-tabs-tab"><a href="#">Tab 4</a></li>
    </ul>
    <div class="mk-tabs-panes">
        <div class="mk-tabs-pane">Tab Content 1</div>
        <div class="mk-tabs-pane is-active">Tab Content 2</div>
        <div class="mk-tabs-pane">Tab Content 3</div>
        <div class="mk-tabs-pane">Tab Content 4</div>
    </div>
</div>

@farinspace 我正在尝试这个。我认为该错误与窗格代码“最接近”。

HTML

<div class="mk-tabs">
    <ul>
        <li class="mk-tabs-tab"><a href="#">Tab 1</a></li>  
        <li class="mk-tabs-tab is-active"><a href="#">Tab 2</a></li>
    </ul>
    <div class="mk-tabs-panes">
        <div class="mk-tabs-pane">Tab Content 1</div>
        <div class="mk-tabs-pane is-active">Tab Content 2</div>
    </div>
</div>

jQuery

jQuery(function($){
  $('.mk-tabs').on('click', 'a', function(e){
    e.preventDefault();
    
    var currentTab = $(this).closest('.mk-tabs-tab');
    currentTab.toggleClass('is-active');
    
    //if (currentTab.hasClass('is-active')) console.log('on');
    //else console.log('off');
 
    if ( currentTab.hasClass('is-active') ) {
        $('.mk-tabs .mk-tabs-panes .mk-tabs-pane').toggleClass('is-active');
    }

  });
});
</script>