當我使用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文件中的單個字符。 –