2

我正在使用 bind 来更改“this”的范围,以便能够在 click 函数中使用“this”引用我的 generateContent 函数。不幸的是,这意味着 this.id 不再有效,因为“this”的范围发生了变化。

在这种情况下,获取单击按钮的 id 的最佳方法是什么:

function help( doc ) {

    buttons: function() {

        $('.add-btn').click( function() {

        this.generateContent( this.id ) );

        }.bind(this));

    },

    generateContent: function ( id ){

    }

}

// This function binds a function to an object's scope.
Function.prototype.bind = function(scope) {
    var _function = this;
    return function() {
        return _function.apply(scope, arguments);
    }
}
4

1 回答 1

5

你没有标记 jQuery,但你的代码像 jQuery 一样嘎嘎叫,所以我假设 jQuery。

jQuery 提供event.currentTarget

$('.add-btn').click( function(e) {
     this.generateContent( e.currentTarget.id ) ;
}.bind(this));

顺便说一句Function.prototype.bind,本机存在,您不想在本机版本可用的情况下覆盖它。jQuery 也提供了$.proxy,所以你在任何情况下都不需要它。

看演示

于 2012-07-23T14:09:53.003 回答