javascript - 如何取消绑定(bind)到元素的点击事件?

标签 javascript jquery html

我知道如何使用 onclick 事件来做到这一点:How do you override inline onclick event?

但是,有一个事件似乎绑定(bind)到我想删除/取消的特定 HTML 元素。

以下是它与 jQuery 的绑定(bind)方式:

  $('.play-control').bind('click', function(evt){
        player.play();
  });

使用我上面提供的 SE 链接不会“解除关联”原始绑定(bind)。似乎只适用于 onclick 事件。

那么我如何在 Javascript(或 jQuery)中“解除绑定(bind)”事件绑定(bind)?

最佳答案

您可以使用 unbind 取消绑定(bind)与 jQuery 连接的所有 click 处理程序,或者使用更新版本的 jQuery,关闭:

$('.play-control').unbind('click');
// or
$('.play-control').off('click');

但是,除非您可以更改连接该处理程序的代码,否则您无法在不深入研究 jQuery 内部数据结构的情况下仅取消该特定的处理程序,这些数据结构可能会在点发布之间发生变化,恕不另行通知。

如果您可以更改该代码,可以通过以下两种方法仅定位该处理程序:

1.使用命名函数:

连接起来:

function playClick(evt){
    player.play();
}
$('.play-control').on('click', playClick);   // Or use `bind`

解开它:

$('.play-control').off('click', playClick);  // Or use `unbind`

2.使用“事件命名空间”:

连接起来:

$('.play-control').on('click.play', function(evt){ // Or use `bind`
    player.play();
});

解开它:

$('.play-control').off('click.play');  // Or use `unbind`

请注意添加到 click.play

文档中的更多内容:on , off

关于javascript - 如何取消绑定(bind)到元素的点击事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37078542/

相关文章:

javascript - HTML 嵌入标签覆盖导航栏中的 div 标签

javascript - 有什么方法可以使 window.scrollTo(0, 1) 流畅地动画化?

javascript - Nock 不返回设置的 header

javascript - 如何动态过滤 jQuery Mobile 选择表单

javascript - 如何根据此 JSON 中的不同已知属性返回正确的 ID

javascript - 带有 HTML 表格的 Jquery 数学

javascript - 打开新窗口而不关注它

javascript - 函数超时 (jQuery)

javascript - 如何不使用canvasclearRect()进行多张绘图?

javascript - 使用 Onclick - 单独更改文本