我正在尝试在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^="#"]')
});
答案 0 :(得分:0)
你需要使用$(this)
,因为在回调函数this
中指向dom元素而不是jQuery包装元素,因此它没有方法.attr()
var target = $(this).attr('href')
演示:Fiddle
答案 1 :(得分:0)
由于您使用的是jQuery,可能使用jQuery.proxy() method可以提供帮助吗?它从现有函数引用一个新的函数引用,并重新定义被调用函数中的“this”(上下文)。