2010-08-12 34 views
1

我正在使用腳本#0.6及其新添加的jQuery支持,至今我印象非常深刻。腳本#和附加的jQuery事件

在C#我附上點擊處理程序的按鈕,像這樣

jQuery.Select("#myButton").Click(myHandler); 

它被編譯成這個JavaScript

$("#myButton").click(ss.Delegate.create(this, this.myHandler)); 

反正是有得到它編譯成

$("#myButton").click(this.myHandler); 

甚至更​​好

$("#myButton").click($.proxy(this.myHandler, this)); 

我意識到這是一個小問題,但我想減少對ss和其他Script#依賴項的引用數,因爲Script#仍處於開發的早期階段。

回答

1

功能ss.Delegate.create(this,this.myHandler)與this.myHandler有很大不同。他們提供不同的行爲。前者保留「this」這個對象的上下文,而後者則沒有。

如果您的處理程序不需要「本」方面,即在C#中的術語,可以是一個靜態方法,然後使它左右,而腳本#將發出,而不是執行以下操作:

$("myButton").click(MyClass.myHandler) 

希望這有助於。

無法取代生成的內容,但是您可以(如果您真的想要)編寫您自己的mscorlib.js或ss.Delegate版本 - 編譯器不關心,只要您的實現與它期望從運行時腳本簽訂合同。

+0

謝謝澄清。我猜另一個選擇是編寫我自己的jQuery橋,但目前的實現很好。保持偉大的工作。 – row1 2010-08-29 06:46:57