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