如何在回调中将“this”关键字引用到另一个函数?

时间:2013-07-31 02:24:41

标签: javascript jquery call

我正在尝试在click方法的回调函数上创建一个引用。我希望this引用被点击的href。我应该怎么做呢?我已经阅读了有关使用.call方法的内容,但对我来说并非100%清楚..

以下是我正在处理的代码段。我留下了一个评论,我遇到了麻烦。

var scrollTo = {
    init: function(config) {
        var href = config.element;

        href.on('click', this.scroll);

    },

    scroll: function(e) {
        var target = this.attr('href'), // I would like "this" to refer to the href.onClick element
            sT = $(target).offset().top;

            console.log(this);
            $('html, body').animate({
                scrollTop: sT
            }, 2000);

            e.preventDefault();

    }

}

scrollTo.init({
    element: $('a[href^="#"]')
});

2 个答案:

答案 0 :(得分:0)

你需要使用$(this),因为在回调函数this中指向dom元素而不是jQuery包装元素,因此它没有方法.attr()

var target = $(this).attr('href')

演示:Fiddle

答案 1 :(得分:0)

由于您使用的是jQuery,可能使用jQuery.proxy() method可以提供帮助吗?它从现有函数引用一个新的函数引用,并重新定义被调用函数中的“this”(上下文)。