2012-02-25 77 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。

相关问题