2012-11-05 66 views
1

是否有可能从听众中取消绑定监听器?我想这样做,因为我有一个监听器,决定当按下某个键自身的解绑定(例如标准,听者应该解除绑定。使用.off()它嵌套。对内部而()

$input.on("keydown.listenerOne", function (press) { 
    if(press=="37"){ 
     $input.off("keyup.listenerOne"); 
    } 
}); 
+2

你尝试什么时间?它有用吗?另外我认为'press'将是事件对象而不是哪个键被按下。 – Musa

+0

这不是一个问题,如果你改变了'关(“KEYUP ....''要关闭(”的keydown ....'这会工作,而且你改变'按==''到= press.keyCode =' – andlrc

+0

这是行不通的,由于该keydown/KEYUP不一致的情况。我已经在我的代码凝视时间过长...... – brentonstrine

回答

2

这不起作用,因为你绑定了​​事件并且解除绑定事件,该绑定没有绑定按照您的例子。你也引用作为press事件将eevent,你会需要引用which属性:if(e.which == 37)

+0

你说得对,基本上是一堆错别字...感谢。 – brentonstrine

+0

快乐帮:) – AlienWebguy

3

是的,这是一个正确的做法,你可以在里面解除绑定但是请注意,你有两个不同的事件(keyup和keydown),也许你的意思是keyup

2

你应该解除绑定你要绑定同样的事情。在这种情况下,你正试图拆散keyup当你甲肝​​界。此外,press不会告诉你该键代码,你应该做的

var code = press.keyCode || press.which; 
if(code == 37) { //Enter keycode 
    //Do something 
} 

而不是if (press == "37")

this answer

+0

'keyCode' is not reliable。 – AlienWebguy

+0

我更新了答案 – Jeff

+1

很酷,你可以通过删除三元组并替换为'var code = press.keyCode || press.which;' – AlienWebguy

相关问题