$('.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)。我已经尝试过绑定但它可以工作。
有什么想法吗?
答案 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
}
};