根据下一个元素的类

时间:2017-01-23 10:35:21

标签: javascript jquery css display getelementsbyclassname

这里有一个问题对于经验丰富的javascript用户来说可能很容易,但我自己无法解决。

如果下一个html元素具有特定的类,我想添加一个显示或隐藏元素(h1)的javascript代码。这里没有父/子,只有下一个元素。 请注意Jquery已经加载。

以下是例子:

<h1>This must be displayed because next element is div class="show"</h1>
<div class="show">
  <p>Show header above</p>
</div>

<h1>This should not be displayed because next element is NOT div class="show"</h1>
<div class="dontshow">
  <p>Don't show header above</p>
</div>

提前感谢您的帮助。 问候

4 个答案:

答案 0 :(得分:3)

您可以使用.prev()获取前一个兄弟,然后显示/隐藏它们。

&#13;
&#13;
$('div.show').prev('h1').addBack().show();
$('div.dontshow').prev('h1').addBack().hide();
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h1>This must be displayed because next element is div class="show"</h1>
<div class="show">
  <p>Show header above</p>
</div>

<h1>This should not be displayed because next element is NOT div class="show"</h1>
<div class="dontshow">
  <p>Don't show header above</p>
</div>
&#13;
&#13;
&#13;

Refences

答案 1 :(得分:2)

使用previousElementSibling获取上一个兄弟元素。

document.querySelector('.dontshow').previousElementSibling.style.display = 'none';

document.querySelector('.show').previousElementSibling.style.display = 'block';
.dontshow {
  display: none;
}
<h1>This must be displayed because next element is div class="show"</h1>
<div class="show">
  <p>Show header above</p>
</div>

<h1>This should not be displayed because next element is NOT div class="show"</h1>
<div class="dontshow">
  <p>Don't show header above</p>
</div>

对于较旧的浏览器,请检查polyfill option

答案 2 :(得分:1)

请在下面找到代码段

&#13;
&#13;
$( "h1" ).each(function( index ) {
  if($(this).next().hasClass("show"))
  {
   $(this).show();
  }
  else
  {
   $(this).hide();
  }
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h1>This must be displayed because next element is div class="show"</h1>
<div class="show">
  <p>Show header above</p>
</div>

<h1>This should not be displayed because next element is NOT div class="show"</h1>
<div class="Hide">
  <p>Don't show header above</p>
</div>
&#13;
&#13;
&#13;

答案 3 :(得分:0)

另外,为什么不把h1标签放在div中?:

<div class="show">
  <h1>This must be displayed</h1>
  <p>Show header above</p>
</div>

<div class="dontshow">
  <h1>Don't show</h1>
  <p>Don't show header above</p>
</div>