2011-09-14 45 views
2

我MooTools的愛好者,並獲得用於綁定的回調函數,例如:如何改變執行上下文jQuery中,而不必調用函數

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

假設是當前執行上下文。此聲明意味着,我將這個的執行上下文綁定到函數回調。此外,據我所知,某些瀏覽器(例如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的大師都有自己的想法?

+0

你可以添加到'Function.prototype'換行功能的另一種做了'apply'通話功能,我想。我覺得這在JS中並不被認爲是好的做法。 – Jon

+0

您已經有了答案...請申請或致電您的功能 – Mohsen

+0

Mohsen,請看我的標題。我不想調用該函數。我只是想通過不同的上下文傳遞一個回調的副本。 –

回答

6

請參閱jQuery.proxy()

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

+0

這不是從庫的基礎庫,是嗎?我看到了這一點,但它看起來像一個插件。 –

+0

是的,它被添加到jQuery v1.4中的jQuery核心。 – simshaun

相關問題