jQuery打开并关闭同一类的两个单独的div

时间:2019-06-10 03:15:59

标签: javascript jquery html css

我想打开和关闭两个单独的div,并且同一个类。

下面的示例中,当我第一次单击opentab 内容1 时,将第一次打开,然后再次单击内容2 ,将第二次打开。

按照内容2和内容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>

2 个答案:

答案 0 :(得分:3)

因为您需要知道要去的“方向”(即,下次点击应该是打开还是关闭项目),我建议使用布尔变量进行跟踪。我们称之为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>

答案 1 :(得分:0)

隐藏第二个div并进行切换。

$('.tabcontent').eq(1).hide();
$(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>

具有隐藏和使用切换功能的备用集计数器。

//$('.tabcontent').eq(1).hide();
var counter = 0;
$(".opentab").on('click', function() {
  $('.tabcontent').eq(counter).hide();
  counter++;
  if (counter > 1) // Reset counter
    counter = 0;
  $('.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>