我知道如何使用onclick事件执行此操作:How do you override inline onclick event?
但是有一个事件似乎与我想删除/取消的特定HTML元素绑定。
以下是它与jQuery绑定的方式:
$('.play-control').bind('click', function(evt){
player.play();
});
使用我在上面提供的SE链接不会解除关联"原始绑定。似乎只适用于onclick事件。
然后我将如何解开" Javascript(或jQuery)中的事件绑定?
答案 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
。
答案 1 :(得分:0)
可以使用.unbind()删除附加.bind()的事件处理程序。 (从jQuery 1.7开始,首选.on()和.off()方法 在元素上附加和删除事件处理程序。)在最简单的情况下, 没有参数,.unbind()删除附加到的所有处理程序 要素:http://api.jquery.com/unbind/
根据Jquery的说法,首选使用off
和on
$(document).bind('click', '.play-control', function(evt){
player.play();
})
$('.play-control').off('click');