2012-02-25 65 views
1

如何在jQuery點擊事件處理程序中重新定義this?幾年前我讀到Edge有一個可選參數,你可以通過這個參數讓這個綁定到別的東西上,但似乎不再是這種情況。

+0

將'this'綁定到別的東西上並在事件處理程序中重新定義'this'是兩件不同的事情...... – 2012-02-26 17:43:51

回答

3

有兩種常見的方法。我更喜歡使用jQuery.proxy

$.fn.highlighter = function(){ 
    this.click($.proxy(function(){ 
     this.addClass('highlight'); 
    }, this)); 
}; 

其他常見的替代方法是分配給this地方self調用單擊處理函數內。

$.fn.highlighter = function(){ 
    var self = this; 
    this.click(function(){ 
     self.addClass('highlight'); 
    }); 
}; 
1

您可以使用.bind()來設置一個功能this值。

var clickHandler = function() { 
    // your click handler 
}; 

然後:

$(stuff).on('click', clickHandler.bind(context)); 

其中context是你要綁定到this值(處理程序內)。

注意:您需要爲舊版瀏覽器提供ES5-shim。

相關問題