我正在尝试在JQuery UI中编写自定义小部件(v 1.9 m8):http://pastebin.com/zua4HgjR 从我的网站我这样称呼:var D = new $ .ui.mail({});基本上它有效。
有没有更好的方法在按钮点击时调用doSend?
问题是如何从函数处理程序访问对象实例? “this”返回整个html窗口。 尝试使用$ .proxy不起作用:点击:$ .proxy(this.doSend,this);
感谢您的建议!
答案 0 :(得分:1)
不幸的是,如果您使用options
成员设置按钮,则不会引用您调用doSend
所需的元素。我能想出的一个解决方法是在_create
方法中分配处理程序,您可以在其中获得适当的引用。
_create: function() {
this.options.buttons = [
{
text: 'Send',
click: function(self) {
return function() {
$(self.element).mail('doSend');
};
}(this)
},
{
text: 'Cancel',
click: function() { $(this).remove() }
}
];
this._super(arguments);
}
直播示例 - http://jsfiddle.net/hhscm/2/
答案 1 :(得分:0)
本周末花了我最后完成了我的插件:http://agrimarket-blacksea.com/jsc/jquery-mail.js
我决定以经典的方式称呼“课程功能”:$(this).mail('doSend')
,直到我找到更好的东西。
谢谢!