javascript - jQuery 打开关闭两个单独的 div 一个一个地使用相同的类

标签 javascript jquery html css

我想用同一个类一个一个地打开和关闭两个单独的 div。

下面的例子,当我第一次点击opentab时,content 1会第一次打开,第二次点击content 2会第二次打开。

按照content 2 和content 1 一个一个的关闭div。

Reference link

评论进一步澄清。提前致谢。

$(document).ready(function() {
   $(".opentab").on('click', function () {
   $('.tabcontent').toggle('show');
  })
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a href="#" class="opentab" id="opentab">Open tab</a>

<div class="tabcontent">
    Content 1
</div>
<div class="tabcontent">
    Content 2
</div>

最佳答案

因为您需要知道您要去的“方向”(即如果下一次点击应该是打开关闭元素),我建议使用 bool 变量来跟踪。我们称其为 isClosing

从逻辑上讲,您总是在做以下两件事之一:

  • 如果关闭,隐藏最后可见
  • 如果打开,显示隐藏的第一个

(代码中包含注释)

let isClosing = true;  //We need to know if we're "closing" or "opening" the items

$(".opentab").on('click', function() {

  $(".tabcontent").finish();                //Skip animations if pressed rapidly

  const $elementToToggle = isClosing 
    ? $('.tabcontent:visible').last()       //If "closing", toggle the last visible
    : $('.tabcontent:hidden').first();      //Otherwise, toggle the first hidden

  $elementToToggle.toggle('show', () => {                         //Callback to wait for animation to complete
    if (!$(".tabcontent:visible").length) isClosing = false;      //All hidden, switch to "opening"
    else if (!$(".tabcontent:hidden").length) isClosing = true;   //All visible, switch to "closing"
  });
  
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a href="#" class="opentab" id="opentab">Open tab</a>

<div class="tabcontent">Content 1</div>
<div class="tabcontent">Content 2</div>
<div class="tabcontent">Content 3</div>
<div class="tabcontent">Content 4</div>

关于javascript - jQuery 打开关闭两个单独的 div 一个一个地使用相同的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56520086/

相关文章:

javascript - 如何使用 angularjs 或简单的 javascript 合并两个对象?

Jquery DatePicker 在文本框的背面加载 - css 问题

javascript - 为什么我的浏览器从 Express 加载 JSON 响应?

javascript - 如何将 Bootstrap 下拉列表添加到列表元素内的按钮

javascript - PHP 将 setTimeout() 回显给 javascript

javascript - 如果是 "Strings are objects,"那么为什么我不能在它们上面存储属性?

javascript - 为什么JS在IE以外的所有浏览器都能正常刷新?

jquery - offset.left 必要的 css 是什么

html - 如何仅使用 css 创建评级系统

javascript - 如何在第一次点击时获得正确的百分比?