如何使绑定到元素的click事件无效?

时间:2016-05-06 17:48:31

标签: javascript jquery html

我知道如何使用onclick事件执行此操作:How do you override inline onclick event?

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

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

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

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

然后我将如何解开" Javascript(或jQuery)中的事件绑定?

2 个答案:

答案 0 :(得分:1)

您可以使用click取消绑定使用jQuery的所有 unbind处理程序,或者使用更新的jQuery版本off取消绑定:< / p>

$('.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`

请注意.play添加到click

文档中的更多内容:onoff

答案 1 :(得分:0)

  

可以使用.unbind()删除附加.bind()的事件处理程序。   (从jQuery 1.7开始,首选.on()和.off()方法   在元素上附加和删除事件处理程序。)在最简单的情况下,   没有参数,.unbind()删除附加到的所有处理程序   要素:http://api.jquery.com/unbind/

根据Jquery的说法,首选使用offon

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

    $('.play-control').off('click');