在$ .click事件处理程序中重新定义它

时间:2012-02-25 23:23:17

标签: javascript jquery

如何在jQuery点击事件处理程序中重新定义this?几年前我读到Edge有一个可选参数,你可以传入这个参数以使其与其他东西绑定,但似乎不再是这种情况了。

2 个答案:

答案 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。