1
如何在jQuery點擊事件處理程序中重新定義this
?幾年前我讀到Edge有一個可選參數,你可以通過這個參數讓這個綁定到別的東西上,但似乎不再是這種情況。
如何在jQuery點擊事件處理程序中重新定義this
?幾年前我讀到Edge有一個可選參數,你可以通過這個參數讓這個綁定到別的東西上,但似乎不再是這種情況。
有兩種常見的方法。我更喜歡使用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');
});
};
您可以使用.bind()
來設置一個功能this
值。
var clickHandler = function() {
// your click handler
};
然後:
$(stuff).on('click', clickHandler.bind(context));
其中context
是你要綁定到this
值(處理程序內)。
注意:您需要爲舊版瀏覽器提供ES5-shim。
將'this'綁定到別的東西上並在事件處理程序中重新定義'this'是兩件不同的事情...... – 2012-02-26 17:43:51