当它嵌套在.on()内时使用.off()

时间:2012-11-05 23:49:14

标签: javascript-events event-handling listener jquery

是否可以从侦听器中取消绑定侦听器?我想这样做是因为我有一个监听器来确定自己解绑的标准(例如,当按下某个键时,监听器应该解除绑定。

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

3 个答案:

答案 0 :(得分:3)

是的,这是一种正确的方法。您可以在处理程序内取消绑定,但要注意您有两个不同的事件(keyup和keydown)。也许你的意思是关键。

答案 1 :(得分:2)

这不起作用,因为您绑定了keydown事件并取消绑定keyup事件,该事件对您的示例没有任何约束力。您引用为press的活动也是eevent,您需要引用which媒体资源:if(e.which == 37)

答案 2 :(得分:2)

你应该解除与绑定相同的东西。在这种情况下,当您keyup绑定时,您试图解除绑定keydown。另外,press不会告诉你keyCode,你应该这样做

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

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

取自this answer