2010-08-12 64 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