setTimeout和scrollTop动画单击时无法在手风琴中工作



单击时,我会将活动/展开的手风琴项目跳到顶部。该位置会随着手风琴尚未完成滑动打开或关闭而发生变化,从而导致偏移。

我已经了解到,我需要将这个函数包装在setTimeout中,以便它在滑动动画完成后执行。这是我到目前为止的代码

$('.accordion-title').on('click', function() {
var content = $(this).next();
$('.accordion-content').not(content).slideUp(400);
$('.accordion-title').not(this).removeClass('expanded');
$(this).toggleClass('expanded');
content.slideToggle(400);

$('html,body').animate({scrollTop: $(this).offset().top}, 100);
});

我尝试了以下操作,但它导致错误

setTimeout(function(){
$('html,body').animate({scrollTop: $(this).offset().top}, 100);
},400);

这是我的小提琴

您需要这个代码吗?

$('.accordion-title').on('click', function() {
var content = $(this).next();
$('.accordion-content').not(content).slideUp(400);
$('.accordion-title').not(this).removeClass('expanded');
$(this).toggleClass('expanded');

var self = this;
content.slideToggle(400, function(e) {
$('html,body').animate({scrollTop: $(self).offset().top}, 100); 
});


});

最新更新