如何声明使用bind在Jquery中调用单独的函数作为偶数处理程序

时间:2017-01-19 23:54:47

标签: jquery jquery-pagescroller

我有一个代码块可以正常工作:

$('a.page-scroll').bind('click', function(event) {
    var $anchor = $(this);
    $('html, body').stop().animate({
        scrollTop: $($anchor.attr('href')).offset().top
    }, 1500, 'easeInOutExpo');
    event.preventDefault();
});

现在我想稍微操作一下代码:创建一个pageScroll函数,让它成为bind()中的事件处理程序:

//page scroll function 
$.fn.pageScroll = function(){

    ////Create a new jQuery.Event object without the "new" operator.
    var event = $.Event( "click" );
    // prevent browser to operate as default on the event
    event.preventDefault();

    var $anchor = $(this);
    $('html, body').stop().animate({
        scrollTop: $($anchor.attr('href')).offset().top
    }, 1500, 'easeInOutExpo');
    event.preventDefault();
};
// jQuery for page scrolling feature - requires jQuery Easing plugin
// call pageScroll() function for click event on page-scroll class of <a> tag

$('a.page-scroll').bind('click', $().pageScroll(event));

1 个答案:

答案 0 :(得分:0)

代码的问题在于您执行'pageScroll'功能。 通过它,您可以向bind函数发送'pageScroll'函数的响应,而不是指向函数的指针。

所以基本上你需要做的就是替换它:

$('a.page-scroll').bind('click', $().pageScroll(event));

用这个

$('a.page-scroll').bind('click', $().pageScroll);