当我使用slideToggle()时,它会自动向下推动内容,但我希望它可以向上推动内容。使.slideToggle()将内容向上推动
图片放映想要的行为:
代码示例:https://jsfiddle.net/sk8rr3qn/
HTML
<div class="container">
<div class="top">
first top
</div>
<div class="mid">
mid1<br/>mid1<br/>mid1
</div>
<div class="mid">
mid2<br/>mid2<br/>mid2<br/>mid2<br/>mid2<br/>mid2<br/>mid2
</div>
<div class="mid">
mid3<br/>mid3<br/>mid3
</div>
<div class="mid">
mid4<br/>mid4<br/>mid4<br/>mid4
</div>
<div class="mid">
mid5<br/>mid5<br/>mid5<br/>mid5<br/>mid5
</div>
<div class="mid">
mid6<br/>mid6<br/>mid6
</div>
<div class="bottom">
first bottom
</div>
</div>
<br/>
<div class="container">
<div class="top">
second top
</div>
<div class="mid">
mid1<br/>mid1<br/>mid1
</div>
<div class="mid">
mid2<br/>mid2<br/>mid2<br/>mid2<br/>mid2<br/>mid2<br/>mid2
</div>
<div class="mid">
mid3<br/>mid3<br/>mid3
</div>
<div class="mid">
mid4<br/>mid4<br/>mid4<br/>mid4
</div>
<div class="bottom">
second bottom
</div>
</div>
CSS
.container {
width: 50%;
padding-left: 25%;
}
.top, .mid, .bottom {
position: relative;
width: 100%;
color: white;
background-color: green;
}
.mid {
display: none;
}
个
JS
$(document).ready(function(){
$('.top, .mid').click(function(){
if($(this).next().next().is(':hidden') || $(this).next().next().hasClass('bottom')) {
$(this).next().slideToggle(300);
}
});
});
(我知道的.next()。next()的两次是不必要的)。
当我打开下一个div时,我想让底部保持原样并让顶部从屏幕上移开。原因是我不想在添加内容时继续滚动,新添加的内容将大致保持在屏幕的中心位置。我知道在内容加载之后使用一些.scroll()函数部分可行,但我宁愿在内容被切换时推送内容,而不是在之后。
类似地,关闭切换开关时应将顶部拉下。
TL;博士:让使用.slideToggle()时
请将'$(this)'赋值给一个变量并重用。重复使用'$(this)'不会最小化。 –
@GoneCoding,在我的代码中,它与eventListener配对使用,这就是为什么它的工作原理: var noticers = $(“。notice”);对于(var i = 0; i
与我的评论没有任何关系。如果您多次使用jQuery选择器,请将其缓存在一个变量中。然后它可以最小化为min.js文件中的单个字符。 –