开发者

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜