使用选择器作为参数?

时间:2014-08-22 03:06:00

标签: jquery parameters jquery-selectors

所以,这是我想要用于所有按钮的工作功能,但我当然不想连续写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") ) );

1 个答案:

答案 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")));