javascript - 当用户单击时,jQuery 动态添加和删除类

标签 javascript jquery tabs

我的以下代码有问题。我的导航中有两个选项卡 Tab-1 和 Tab-2,当用户单击任何选项卡时,我想向其添加 active 类,并在同时我想从以前的事件选项卡中删除事件类。此外,当前事件的选项卡应显示其内容并必须隐藏其余内容。这意味着当用户单击任何选项卡时,它应该只显示其内容,而其他内容应该隐藏。请帮帮我谢谢。

<style>
    .wrapper .tabs {
        display: none;
    }
    .wrapper .tabs.active {
        display: block;
    }
</style>

<div class="wrapper">

    <!-- Navigation -->
    <ul class="nav">
        <li class="active"><a href="#tab-1">Tab-1</a></li>
        <li><a href="#tab-2">Tab-2</a></li>
    </ul>

    <!-- Panel-1 -->
    <div id="tab-1" class="tabs active">
        <p>Tab-1 Content</p>
    </div>

    <!-- Panel-2 -->
    <div id="tab-2" class="tabs">
        <p>Tab-2 Content</p>
    </div>

</div>

<!-- Script -->
<script>
    $(document).ready(function () {
        $('.nav li').click(function() {
            $('.nav li.active').removeClass('active');
            $(this).addClass('active');
        });

        // To display content for active class only
        $('.nav li').click(function() {
            $('.wrapper .tabs.active').removeClass('active');
            $(this).addClass('active');
        });
    });
</script>

最佳答案

您可以在附加到选择器 "a[href^ 的 click 事件中使用 .eq().index() ='#tab-']" 选择 href#tab- 开头的元素,创建变量引用其中 id 的元素以 tab- 开头,在 click 函数中调用 event.preventDefault() 以防止导航到文档片段,.hide(), .show()

   $(document).ready(function() {
     var a = $("a[href^='#tab-']");
     var tabs = $("[id^=tab]");
     a.click(function(e) {
       e.preventDefault();
       tabs.hide().eq(a.index(this)).show()
     })
   })
#tab-1 {
  display: block;
}
[id^="tab"]:not(#tab-1) {
  display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0/jquery.js">
</script>
<div class="wrapper">
  <!-- Navigation -->
  <ul class="nav">
    <li>
      <a href="#tab-1">Tab-1</a>
    </li>
    <li>
      <a href="#tab-2">Tab-2</a>
    </li>
  </ul>
  <!-- Panel-1 -->
  <div id="tab-1" class="tabs active">
    <p>Tab-1 Content</p>
  </div>
  <!-- Panel-2 -->
  <div id="tab-2" class="tabs">
    <p>Tab-2 Content</p>
  </div>
</div>

关于javascript - 当用户单击时,jQuery 动态添加和删除类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39049688/

相关文章:

javascript - 未捕获的类型错误 : Illegal invocation in JavaScript

javascript - jQuery 箭头键功能在我的表格最后一行添加文本框时停止

javascript - 未捕获的语法错误: Unexpected token ILLEGAL的解决方案

javascript - 获取对 <a> 上的单击事件打开的选项卡的引用

javascript - 样式 ="display:block;"适用于 Chrome 但不适用于 Safari

javascript - jQuery 构造函数中的函数有什么不同吗?

javascript - 如何在将类添加到元素后触发针对类的方法?

javascript - 如何使函数影响类中的所有内容,同时也考虑数据属性

javascript - 使用 Javascript 创建新的 div-tabs

javascript - 浏览器上的后退按钮未进入 vue 中的右侧选项卡