如何在jQuery点击事件处理程序中重新定义this
?几年前我读到Edge有一个可选参数,你可以传入这个参数以使其与其他东西绑定,但似乎不再是这种情况了。
答案 0 :(得分: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 :(得分:1)
您可以使用.bind()
为函数设置this
值。
var clickHandler = function () {
// your click handler
};
然后:
$( stuff ).on( 'click', clickHandler.bind( context ) );
其中context
是您要绑定到this
的值(在处理程序中)。
注意:您需要向旧浏览器提供ES5-shim。