注意:代码看起来很长,但其简单的伪代码用于演示目的。不要逃跑!
我编写了一个监听按键的小部件。当onKeyDown
事件被触发时,对的引用将this
丢失。所以我设置了一个作用域变量self
来引用小部件。 self
在创建小部件时初始化。
这可行,但我不确定这是正确的方法。我认为这里的解决方案与代理有关?也许self
变量已经在充当代理?有人想对发生的事情有所了解吗?
(function($)
{
var vendorPrefix = Modernizr.prefixed("transform");
var self;
$.widget("ui.myWidget", {
_create: function()
{
self = this;
//Do some widget stuff
document.addEventListener('keydown', this.onKeyDown, false)
return this;
},
exampleFn: function()
{
},
onKeyDown: function(event)
{
// this now refers to "document" and not the widget
switch(event.keyCode)
{
case 37:
self.exampleFn();
break;
case 39:
self.exampleFn();
break;
}
}
});
})(jQuery);