所以,这是我想要用于所有按钮的工作功能,但我当然不想连续写5次。
$(".concept-button").click(function() {
$('html,body').animate({
scrollTop: $(".concept-section").offset().top},'slow');
});
那么,我在下面做错了什么?
var scrollFunction = function(sectionToScrollTo) {
$('html,body').animate({
scrollTop: ( sectionToScrollTo).offset().top},'slow' );
};
$(".strategy-button").click( scrollFunction( $(".strategy-section") ) );
答案 0 :(得分:2)
问题是您正在调用函数scrollFunction
()而不是将其注册为单击回调。在您的情况下,您使用所述参数调用scrollFunction
,然后将从它返回的值(undefined
)传递给单击处理程序,这意味着没有注册单击处理程序。
相反,你可以做的是让scrollFunction
返回回调函数,该函数将作为回调传递给click()
。
var scrollFunction = function (sectionToScrollTo) {
return function () {
$('html,body').animate({
scrollTop: sectionToScrollTo.offset().top
}, 'slow');
}
};
$(".strategy-button").click(scrollFunction($(".strategy-section")));