好的,我想知道如何在jQuery中取消绑定内联onclick事件。您认为.unbind()
可行,但事实并非如此。
要自己测试一下,请使用以下HTML和JavaScript:
function UnbindTest() {
$("#unbindTest").unbind('click');
}
function BindTest() {
$("#unbindTest").bind('click', function() { alert("bound!"); });
}
<button type="button" onclick="javascript:UnbindTest();">Unbind Test</button>
<button type="button" onclick="javascript:BindTest();">Bind Test</button>
<button type="button" onclick="javascript:alert('unbind me!');" id="unbindTest">Unbind Button</button>
正如您所看到的,取消绑定不会取消绑定内联onclick
事件...但是它解除了与bind()
一起添加的点击事件的绑定。
所以,我想知道是否有办法解除内联onclick事件,而不是执行以下操作:
$("#unbindTest").get(0).onclick = "";
由于
答案 0 :(得分:34)
jQuery的unbind不适用于onclick
属性 - 它仅适用于通过bind
添加的功能,因此可在$(...).data('events')
中使用。您必须使用removeAttr
删除onclick
。
阅读this question了解详情。
答案 1 :(得分:4)
unbind
取消绑定使用bind
注册的事件处理程序,而不是通过onclick
或其他DOM0属性分配的事件处理程序。来自文档:
可以使用
.bind()
删除与.unbind()
相关联的所有处理程序。
编辑:通过清除元素上的相关属性取消绑定DOM0处理程序。我不得不去查找jQuery的方法:removeAttr
。