javascript - 从 jquery 元素中删除 keydown 事件不起作用

标签 javascript jquery

我在元素上有 keydown 事件。

$("#element").keydown(function() {
     // do stuff!
});

现在我想删除它。

我尝试了 unbindoff 但都没有用。

$("#element").unbind("click");
$("#element").off("click");

我需要执行 .on("click", function...) 还是 .bind("click", function...) 而不是 .click 如果使用 unbindoff。如果是这样,这不是我的代码,我不能修改它,所以我需要一个替代方法。

除了“解除绑定(bind)”或“关闭”之外,还有其他有效的方法吗?

谢谢,非常感谢帮助!!

最佳答案

.off( events [, selector ] [, handler ] ): version added: 1.7

.unbind( eventType [, handler ] ): version added: 1.0

The .on() method attaches event handlers to the currently selected set of elements in the jQuery object. As of jQuery 1.7, the .on() method provides all functionality required for attaching event handlers. For help in converting from older jQuery event methods, see .bind(), .delegate(), and .live(). To remove events bound with .on(), see .off(). To attach an event that runs only once and then removes itself, see .one()

所以,我建议关注jQuery版本,因为bind/unbind用得不多。

在以下代码片段中,您可以看到 .off()工作正常:

$( window ).load(function() {
  $("#element").keydown(function(e) {
    console.log('keydown event');
  });
  $("#elementOff").click(function() {
    // unbind keydown
    $("#element").off('keydown');
    
    // attach click
    $("#element").off('click').click(function(e) {
      console.log('click event');
    });
  });
});
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>

<form>
  <input id="element" type="text">
</form>
<button id="elementOff">Unbind Keydown and attach Click</button>

关于javascript - 从 jquery 元素中删除 keydown 事件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38797697/

相关文章:

javascript - 如果父菜单有子菜单,则单击两次以转到链接,如果没有子菜单,则单击一次以链接

JavaScript/jquery : add class if a radio button is selected and data attribute qualifies

javascript - 服务器发送的事件是否为 "Busy Wait"?

Javascript:为什么 (p+1)++ 不起作用?

javascript - 发送 3 状态复选框的值

javascript - Angular:自动完成字段在删除元素后更改焦点

javascript - 动态加载脚本加载后未定义

jquery - 如何选择嵌套元素

javascript - 隐藏部分背景重复

javascript - Ajax 文件上传 (HTML5)