如何在不调用函数的情况下更改jQuery中的执行上下文

时间:2011-09-14 21:54:58

标签: javascript jquery

我是MooTools的爱好者,习惯于绑定回调函数,例如:

element.addEvent('click', callback.bind(this));

假设是当前的执行上下文。这句话意味着,我将 this 的执行上下文绑定到函数 callback 。此外,据我所知,某些浏览器(例如Chrome)已将bind()添加到其JavaScript引擎中。

现在我的工作需要我切换到使用jQuery。显然,bind()在jQuery中有不同的含义,它接近MooTools中的addEvent()。我无法找到改变执行上下文的方法。我必须做以下事情:

var that = this;
element.click(function () {
    callback.apply(that); // Have to invoke it, and also with extra function wrapper
});

但我想做点什么:

element.click(callback.*bind*(this));

任何jQuery大师都有想法吗?

1 个答案:

答案 0 :(得分:6)

请参阅 jQuery.proxy()

element.click($.proxy(callback, this));