我知道這個問題沒有多大意義,但讓我試着澄清一下。如何將此上下文傳遞給事件處理函數?
我有一個類,叫做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設置一個單擊處理程序這一點。 _onClickNavigation。有些人可能會期望這個裏面的事件處理程序引用ScrollBanner實例,但遺憾的是它沒有。它指的是trigerred click事件,在這種情況下跨度#banner1-NAV
會是怎樣的最好的方式得到這個來指代ScrollBanner類實例的元素?
良好的通話,我一般做分配'VAR是= this'我構造的頂部,這樣的習慣你總是有一個參考。然後一直使用'that',這樣就不會產生混淆(當然假定你引用了這個,而不是其他的) – brad 2011-03-30 18:30:21
這很有用,但是感覺很髒。 :) – 2011-03-30 18:30:36
@JoeZephyr:就是這樣;)請看看我的更新了。 – 2011-03-30 18:36:39