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

Dav*_*nan 7 javascript jquery

我在元素上有keydown事件。

$("#element").keydown(function() {
     // do stuff!
});
Run Code Online (Sandbox Code Playgroud)

现在我要删除它。

我尝试过unbind,off但都没有工作。

$("#element").unbind("click");
$("#element").off("click");
Run Code Online (Sandbox Code Playgroud)

我是否需要做.on("click", function...)或.bind("click", function...)代替,.click如果使用unbind或off。如果是这样,那么这不是我的代码,并且不允许我对其进行修改,因此我需要一种替代方法。

除了“解除绑定”或“关闭”以外,还有其他可行的方法吗?

谢谢,非常感谢帮助!!

gae*_*noM 5

.off(events [,选择器] [,处理程序]):添加的版本:1.7

.unbind(eventType [,handler]):添加的版本:1.0

.on()方法将事件处理程序附加到jQuery对象中当前选定的元素集。从jQuery 1.7开始,.on()方法提供了附加事件处理程序所需的所有功能。有关从较旧的jQuery事件方法转换的帮助,请参见.bind()、. delegate()和.live()。要删除与.on()绑定的事件,请参见.off()。要附加仅运行一次然后删除的事件,请参见.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');
    });
  });
});
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)