【发布时间】:2020-09-17 11:44:00
【问题描述】:
我试图在第一个函数的滚动动画完成后调用第二个函数。我已经看到在类似情况下使用回调函数,但是它们似乎更麻烦且难以阅读。有没有更简单或更干净的方法来达到同样的效果?
$('#nav_experience').click(function scrollToExperience(){
$('html, body').animate({
scrollTop: $('#Experience').offset().top
}, 500);
})
function navbarExperienceActive(){
scrollToExperience(function(){
$('#nav_profile').removeClass('active');
$('#nav_education').removeClass('active');
$('#nav_contact').removeClass('active');
$('#nav_experience').addClass('active');
});
}
另外我很欣赏第二个函数是相当重复的,可能有一种更优雅的方式来编写它,我对 JavaScript 比较陌生。
【问题讨论】:
-
问题中的代码不起作用,原因有几个。
scrollToExperience没有在navbarExperienceActive中定义,如果它只是作为click回调存在的那个,它永远不会调用navbarExperienceActive传递它的回调。 (函数表达式不会将函数添加到它们出现的范围,只是函数声明。)
标签: javascript jquery callback jquery-animate