绑定'这个'得到这个

时间:2014-06-19 14:52:56

标签: javascript jquery

$('.btn-delete').on('click', this.confirm.bind(this));

上面,点击它运行:

p.confirm  = function(e) {

    if(!$(this).hasClass('danger')){

        $(this).addClass('danger');

        $(this).bind('mouseleave',function(){    
            $(this).removeClass('danger');
            $(this).unbind('mouseleave');
        });
    }
    else{   
        this.delete();
    }
};

我遇到了麻烦。我需要这个来获取按钮,但我还需要它来访问另一个方法(this.delete)。我已经尝试过绑定但它可以工作。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

假设我正确理解您的问题,您希望能够将点击的元素作为this传递给p.confirm函数。您应该可以使用call或使用p.confirm作为处理程序来执行此操作:

// using call
$('.btn-delete').on('click', function (e) {
    p.confirm.call(this, e);
});

// as handler
$('.btn-delete').on('click', p.confirm);

假设this.delete实际上是p.delete,只需在处理程序中使用call将点击的元素作为this传递给delete方法:

p.confirm = function (e) {
    var self = $(this); // cache lookup, "this" is the clicked element
    if (!self.hasClass('danger')) {
        self.addClass('danger');
        self.bind('mouseleave', function () {
            self.removeClass('danger');
            self.unbind('mouseleave');
        });
    } else {
        p.delete.call(this); // pass clicked element to use as "this" in p.delete
    }
};