尝试让“元素”在“打开部分”slideUp()之后滚动到顶部。如果在$ this元素上方已经打开了一个部分,则由于先前打开的元素的slideUp(),滚动动画会滚过顶部。试图纠正这个。 .slideUp()。finish()和.slideUp()。stop(true,true)工作,但是slideUp()是立即的,看起来很麻烦。想法?
HTML
<div class='sectionContainer' data-section='1'>
<div class='sectionTitle'>
</div>
<div class='section'>
</div>
</div>
<div class='sectionContainer' data-section='2'>
<div class='sectionTitle'>
</div>
<div class='section'>
</div>
</div>
<div class='sectionContainer' data-section='3'>
<div class='sectionTitle'>
</div>
<div class='section'>
</div>
</div>
Jquery的
$(document).ready(function() {
$('.sectionTitle').click(function(i) {
i.preventDefault();
var section = $(this).attr('data-section');
$('.section').not(section).slideUp('slow');
$('html,body').animate({scrollTop: $(this).offset().top});
$(section).slideDown('slow');
});
});
答案 0 :(得分:0)
$('.sectionTitle').click(function() {
if (!$(this).parent().hasClass('active')) {
$('.active .section').slideUp('slow');
$('.sectionContainer').removeClass('active');
$(this).parent().addClass('active');
$(this).parent().children('.section').slideDown('slow', function() {
$('html, body').animate({
scrollTop: $(this).parent().offset().top - 69});
});
} else {
$(this).parent().removeClass('active');
$(this).parent().children('.section').slideUp('slow');
}
});