jQuery中取消绑定内联onClick事件无效?

22

好的,我想知道如何在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个回答

34

jQuery的unbind无法用于onclick属性 - 它只适用于通过bind添加的函数,并且这些函数可在$(...).data('events')中使用。您必须使用removeAttr来删除onclick

阅读此问题以获取更多信息。


4

unbind函数用于解除使用bind注册的事件处理器,而不是通过onclick或其他DOM0属性分配的处理器。根据文档:

任何使用.bind()附加的处理器可以使用.unbind()删除。

编辑:您可以通过清除元素上相关属性来取消绑定DOM0处理器。我查了一下如何使用jQuery实现该操作:removeAttr函数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接