Unbinding inline onClick not working in jQuery?
Okay so, I'm wondering how to unbind an inline onclick event in jQuery. You'd think .unbind()
would work, however it doesn't.
To test this for yourself, play around with the following HTML and 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>
As you can see, unbinding does not unbind the inline onclick
event... however it does unbind the click event added with bind()
.
So, I'm wondering if there is a way to unbind inline onclick events short of doing the following:
$("#unbindTest").get(0).onclick = "";
Thanks
jQuery's unbind won't work on onclick
attributes - it only works for functions that were added via bind
and thus are available in $(...).data('events')
. You have to use removeAttr
to remove onclick
.
Read this question for more info.
unbind
unbinds event handlers registered with bind
, not ones assigned via the onclick
or other DOM0 attributes. From the docs:
Any handler that has been attached with
.bind()
can be removed with.unbind()
.
Edit: You unbind DOM0 handlers by clearing the relevant attribute on the element. I had to go look up the jQuery way of doing that: removeAttr
.
精彩评论