我知道这个问题可能有点不太清晰,但让我稍微澄清一下。
我有一个名为ScrollBanner
的类,它大致如下(为了简洁起见省略了很多内容):
function ScrollBanner() {
this.initialize = function(selector) {
$('span#banner1-nav').click(this._onClickNavigation);
}
this._onClickNavigation = function(event) {
this.restartTimer(); // this == span#banner1-nav element from this.initialize
//...
}
this.restartTimer() {
//...
}
}
正如您所看到的,this.initialize
将点击处理程序设置为this._onClickNavigation
。有些人可能希望事件处理程序中的this
指的是ScrollBanner
实例,但不幸的是它并不是。它指的是触发单击事件的元素,在这种情况下是span#banner1-nav
。
最好的方法是什么,可以使this
指向ScrollBanner
类实例?
$.proxy
:http://api.jquery.com/jQuery.proxy/至少现在你知道所有可能的方法了;) - Felix Klingthis
来引用。 - ahmehri