jQuery onclick显示/隐藏多个div-隐藏了额外的div

问题描述 投票:0回答:1

几年前在这里有一篇关于onclick show / hide divs的文章。

直到您在tab * show链接内添加div或span,然后隐藏内容,此方法才起作用。

我添加了tab1show的一个侧面,当您单击它时,内容被隐藏。有没有办法解决这个问题?

https://jsfiddle.net/amuv3f5L/

<pre>
<div id="tabShows">
<div id="tab1show">
    <div>
test 1 default = show
</div>
</div>

<div id="tab2show">
    test 2
</div>

<div id="tab3show">
    test 3
</div>

<div id="tab4show">
    test 4
</div>

<div id="tab5show">
    test 5
</div>
</div>
</pre>
jquery html hide show
1个回答
0
投票

问题是因为您隐藏了所有子div,而不仅仅是顶级div,并且您从不重新显示子div。要解决此问题,请将选择器更改为:

$('#tabShows > div').hide();

注意>选择器的使用。话虽这么说,您可以通过在所有相关元素上使用通用类,使用CSS隐藏内容而不是JS以及为单击事件使用a元素以提供更好的可访问性来改善逻辑。试试这个:

$('#clicks').on('click', 'a', function(e) {
  e.preventDefault();
  $('#tabShows > div').hide();
  var target = $(this).attr('href');
  $(target).show();
});
#tabShows > div { display: none; }
#tabShows #tab1 { display: block; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="clicks">
  <a href="#tab1">Test 1</a>
  <a href="#tab2">Test 2</a>
  <a href="#tab3">Test 3</a>
  <a href="#tab4">Test 4</a>
  <a href="#tab5">Test 5</a>
</div>
<br /><br />

<div id="tabShows">
  <div id="tab1">
    <div>test 1 default = show</div>
  </div>
  <div id="tab2">test 2</div>
  <div id="tab3">test 3</div>
  <div id="tab4">test 4</div>
  <div id="tab5">test 5</div>
</div>
© www.soinside.com 2019 - 2024. All rights reserved.