相同元素的单个 slideToggle()
Single slideToggle() for the same elements
我有这个代码HTML:
<div>
<div>
<button class="btn-slide"><span class="fa fa-caret-down" aria-hidden="true"></span></button>
</div>
<div class="block">
...
</div>
</div>
我的论坛模板中有几个这样的元素。我使用标准的 js toggle() 脚本:
$(document).ready(function() {
$('btn-slide').click(function() {
$('.block').slideToggle(50);
});
});
当我单击按钮时,所有组件都会显示或隐藏,但我只想 hide/show 我选择的这个元素。我以为我可以在第 3 行使用 $(this).childern 但如果你看到 .block 不是 btn-slide 儿童。那么我怎样才能达到我想要的呢?
$(document).ready(function() {
$('.btn-slide').click(function() {
$(this)
// get all div in parent level
.parents('div')
// get immediate sibling with class block after the element
.next('.block')
.slideToggle(50);
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div>
<div>
<button class="btn-slide"><span class="fa fa-caret-down" aria-hidden="true"></span>
</button>
</div>
<div class="block">
...
</div>
</div>
<div>
<div>
<div>
<div>
<button class="btn-slide">
<span class="fa fa-caret-down" aria-hidden="true"></span>
</button>
</div>
</div>
</div>
<div class="block">
...
</div>
</div>
用这个改变你的 js
$(document).ready(function() {
$('.btn-slide').click(function() {
$(this.nextSibling.parentNode.nextElementSibling).slideToggle(50);
});
});
如果可能,您可以向 block
添加另一个唯一的 class,例如 block-new
,并使用切换事件 class。
$(document).ready(function() {
$('.btn-slide').click(function() {
$('.block-new').slideToggle(50);
});
});
我有这个代码HTML:
<div>
<div>
<button class="btn-slide"><span class="fa fa-caret-down" aria-hidden="true"></span></button>
</div>
<div class="block">
...
</div>
</div>
我的论坛模板中有几个这样的元素。我使用标准的 js toggle() 脚本:
$(document).ready(function() {
$('btn-slide').click(function() {
$('.block').slideToggle(50);
});
});
当我单击按钮时,所有组件都会显示或隐藏,但我只想 hide/show 我选择的这个元素。我以为我可以在第 3 行使用 $(this).childern 但如果你看到 .block 不是 btn-slide 儿童。那么我怎样才能达到我想要的呢?
$(document).ready(function() {
$('.btn-slide').click(function() {
$(this)
// get all div in parent level
.parents('div')
// get immediate sibling with class block after the element
.next('.block')
.slideToggle(50);
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div>
<div>
<button class="btn-slide"><span class="fa fa-caret-down" aria-hidden="true"></span>
</button>
</div>
<div class="block">
...
</div>
</div>
<div>
<div>
<div>
<div>
<button class="btn-slide">
<span class="fa fa-caret-down" aria-hidden="true"></span>
</button>
</div>
</div>
</div>
<div class="block">
...
</div>
</div>
用这个改变你的 js
$(document).ready(function() {
$('.btn-slide').click(function() {
$(this.nextSibling.parentNode.nextElementSibling).slideToggle(50);
});
});
如果可能,您可以向 block
添加另一个唯一的 class,例如 block-new
,并使用切换事件 class。
$(document).ready(function() {
$('.btn-slide').click(function() {
$('.block-new').slideToggle(50);
});
});