javascript - 检查是否有类并且不出现代码//防止删除类

标签 javascript jquery

我有类似标签 View 的东西。当我在选项卡之间切换时,一切正常。

当在链接上单击两次时(再次在 .active 上单击),选项卡的主要内容将获得隐藏类并被“消除”。

如何检查或绑定(bind)此行为,以便单击事件标记时它不会再次更改并且内容仍然会出现?

我尝试过使用 .hasClass()if {}if(!$(".tabTrigger li").hasClass("active )) {} 但这不起作用,我认为这是因为它正在检查它在一般情况下是否具有该类。

$(".tabTrigger li").click(function() {
  var clickClass = $(this).attr("class");
  var selector = clickClass.replace("trigger ", "");
  $(".tabTrigger .trigger.active").removeClass("active");
  $(this).addClass("active");
  $(".tabArea").addClass("hidden");
  $("#" + selector).removeClass("hidden");
});
.trigger.active {
  font-weight: bold;
}

ul {
  list-style-type: none;
}

li {
  display: inline-block;
}

.hidden {
  display: none;
}

li:hover {
  cursor: pointer;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<section>
  <nav class="tabTrigger">
    <ul>
      <li class="trigger First active">First</li>
      <li class="trigger Second">Second</li>
    </ul>
  </nav>
  <section class="tabContent">
    <section class="tabArea" id="First">
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Vivamus suscipit tortor eget felis porttitor volutpat.</p>
    </section>
    <section class="tabArea hidden" id="Second">
      <p>Proin eget tortor risus. Cras ultricies ligula sed magna dictum porta. Nulla porttitor accumsan tincidunt.</p>
    </section>
  </section>
</section>

最佳答案

有很多方法可以做到这一点,但只需在 click 事件 中添加 if(!$(this).hasClass("active")){} 检查即可将为您工作。

这是运行代码片段:

$(".tabTrigger li").click(function() {
  if (!$(this).hasClass("active")) {
    var clickClass = $(this).attr("class");
    var selector = clickClass.replace("trigger ", "");
    $(".tabTrigger .trigger.active").removeClass("active");
    $(this).addClass("active");
    $(".tabArea").addClass("hidden");
    $("#" + selector).removeClass("hidden");
  }
});
.trigger.active {
  font-weight: bold;
}

ul {
  list-style-type: none;
}

li {
  display: inline-block;
}

.hidden {
  display: none;
}

li:hover {
  cursor: pointer;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<section>
  <nav class="tabTrigger">
    <ul>
      <li class="trigger First active">First</li>
      <li class="trigger Second">Second</li>
    </ul>
  </nav>
  <section class="tabContent">
    <section class="tabArea" id="First">
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent sapien massa, convallis a pellentesque nec, egestas non nisi. Vivamus suscipit tortor eget felis porttitor volutpat.</p>
    </section>
    <section class="tabArea hidden" id="Second">
      <p>Proin eget tortor risus. Cras ultricies ligula sed magna dictum porta. Nulla porttitor accumsan tincidunt.</p>
    </section>
  </section>
</section>

关于javascript - 检查是否有类并且不出现代码//防止删除类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51482765/

相关文章:

javascript - 按钮上的 Google Analytics 事件跟踪

PHP & MySQL 查询依赖于复选框

jQuery 链接 : Can everything be chained? 什么时候可以不链接?

javascript - {"a": 1 } at Chrome cause SyntaxError

javascript - 正则表达式 Javascript 捕获字符串

javascript - knockout ,设置属性值更改 View ,不会引发更改事件

jQuery,如何从表单选择中检查选定的选项?

javascript - 互斥的选择/下拉列表

Jquery 无法与 Bootstrap 单选按钮一起使用

javascript - 如何使用 React Scrollbars 获取在垂直滚动期间滚动到 View 中的 React 组件的 ref 或信息?