0

我正在尝试创建对 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^="#"]')
});
4

2 回答 2

0

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

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

演示:小提琴

于 2013-07-31T02:28:30.877 回答
0

既然您使用的是 jQuery,那么使用jQuery.proxy() 方法可能会有所帮助吗?它从现有函数引用新函数并重新定义被调用函数中的“this”(上下文)是什么。

于 2013-07-31T02:30:50.203 回答