2012-12-12 20 views
0

事件Object中的东西就像“originalScrop”属性一样非常有用。 或者还有其他解决方案吗?有没有像jQuery的事件对象中的“originalScope”属性?

{ 
    show: function(){ 
     $(document).on('keydown',this.keydownListener); 
    }, 
    keydownListener: function(e){ 
     if(e.which===27){ o.originalScope.hide(); } // <----- originalScope 
    }, 
    hide: function(){ 
     $(document).off('keydown',this.keydownListener); 
    } 
} 

回答

1

如果你想this指在你的事件处理程序的对象,进行设置时使用$.proxy

$(document).on('keydown', $.proxy(this.keydownListener, this)); 

...这本质上是做同样的工作Function.prototype.bind:对于给定函数并且对象创建另一个函数,其值this绑定到特定对象。

+0

以后可以删除eventLitener吗? $(document).off('keydown',this.keydownListener); –

+0

如果'this'指的是它定义的那个对象,当然。 – raina77ow