jQuery - 创建一个函数并调用它

时间:2015-12-09 16:32:48

标签: javascript jquery

如何在jQuery中创建一个函数并调用它?

这似乎不正确:

var scrollLink = function() {
        $('html, body').animate({
            scrollTop: $( $(this).attr('href') ).offset().top-20
        }, 300);
    };

    $('.js-ask').click(function(e) {
        e.preventDefault();
        $('[href="' + this.dataset.target + '"]').tab('show');
        reportReadMessages();
    });

    $(".js-scroll").click(function(e, scrollLink) {
        e.preventDefault();
        scrollLink();
    });

1 个答案:

答案 0 :(得分:4)

您没有传递thisscrollLink()的内容。当它不理解this是什么时,它是一个具有空参数的函数。所以请把它改成:

$('.js-ask').click(function(e) {
    e.preventDefault();
    $('[href="' + this.dataset.target + '"]').tab('show');
    reportReadMessages();
});

$(".js-scroll").click(function(e) {
    e.preventDefault();
    $('html, body').animate({
        scrollTop: $( $(this).attr('href') ).offset().top-20
    }, 300);
});

您没有以正确的方式传递scrollLink。这就是为什么它不起作用。

或者您可以通过这种方式扩展功能:

$.fn.scrollLink = function() {
    $('html, body').animate({
        scrollTop: $( $(this).attr('href') ).offset().top-20
    }, 300);
};

您可以调用以下元素:

$(this).scrollLink();
$(selector).scrollLink();

有关详细信息,请参阅How to add a function to jQuery?