Display/hide 一个元素取决于下一个元素的 class
Display/hide an element depending on next element's class
这个问题对于有经验的 javascript 用户来说可能看起来很容易,但我自己无法解决。
我想添加一个 javascript 代码,用于在下一个 html 元素具有特定 class 时显示或隐藏元素 (h1)。这里没有 parent/child,只有下一个元素。
请注意 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>
在此先感谢您的帮助。
问候
您可以使用 .prev()
获取紧邻的兄弟姐妹,然后 show/hide 他们。
$('div.show').prev('h1').addBack().show();
$('div.dontshow').prev('h1').addBack().hide();
<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>
参考文献
请在下方查找代码段
$( "h1" ).each(function( index ) {
if($(this).next().hasClass("show"))
{
$(this).show();
}
else
{
$(this).hide();
}
});
<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>
使用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。
顺便说一句,为什么不把 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>
这个问题对于有经验的 javascript 用户来说可能看起来很容易,但我自己无法解决。
我想添加一个 javascript 代码,用于在下一个 html 元素具有特定 class 时显示或隐藏元素 (h1)。这里没有 parent/child,只有下一个元素。 请注意 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>
在此先感谢您的帮助。 问候
您可以使用 .prev()
获取紧邻的兄弟姐妹,然后 show/hide 他们。
$('div.show').prev('h1').addBack().show();
$('div.dontshow').prev('h1').addBack().hide();
<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>
参考文献
请在下方查找代码段
$( "h1" ).each(function( index ) {
if($(this).next().hasClass("show"))
{
$(this).show();
}
else
{
$(this).hide();
}
});
<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>
使用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。
顺便说一句,为什么不把 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>