我想使用$ .proxy在点击事件上加载一个函数。 如果我使用下面的点击事件加载该功能,那么一切正常。
点击正在运作的活动
$('element').click($.proxy(this.doProcess, this));
点击无法使用的活动
$('element').click(function(){
// Perform other things
$.proxy(this.doProcess, this);
});
正如您所看到的,我想在加载函数之前对click事件执行其他操作。如果我使用“.click(function()...”而不是简单的'.click(),你可以帮我找出它没有加载的原因。'
答案 0 :(得分:1)
因为在第一个片段中,click函数调用返回的函数。在第二个代码段中,您将当前this
值绑定到该函数,但您不会调用返回的函数。您可以使用调用运算符(()
)来调用函数:
$.proxy(this.doProcess, this)();
请注意,匿名函数(当前事件处理程序)的上下文中的this
并未引用外部上下文的this
关键字值,可以缓存值:
var that = this;
$('element').click(function() {
// Perform other things
$.proxy(that.doProcess, this)(/* arguments go here */);
// | |
// | ----- refers to the clicked element
// ----- reference of the outer context's `this` value
});