解绑内联onClick不能在jQuery中工作?

时间:2010-05-04 18:51:16

标签: javascript jquery

好的,我想知道如何在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 = "";

由于

2 个答案:

答案 0 :(得分:34)

jQuery的unbind不适用于onclick属性 - 它仅适用于通过bind添加的功能,因此可在$(...).data('events')中使用。您必须使用removeAttr删除onclick

阅读this question了解详情。

答案 1 :(得分:4)

unbind取消绑定使用bind注册的事件处理程序,而不是通过onclick或其他DOM0属性分配的事件处理程序。来自文档:

  

可以使用.bind()删除与.unbind()相关联的所有处理程序。

编辑:通过清除元素上的相关属性取消绑定DOM0处理程序。我不得不去查找jQuery的方法:removeAttr