我有这样的事情:http://jsfiddle.net/PTcw8/4/
<div id="container">
<a href="#" onclick="javascript:alert('inline'); return false;"> show me </a>
<br />
<input type="button" value="click to change the links onclick event" onclick="javascript:changeOnClick(); return false;" />
</div>
function changeOnClick() {
$("#container a").unbind('click');
$("#container a").on('click', function() {
alert("changed on the fly");
})
}
该链接有一个内联的onclick事件,我无法解除绑定并绑定一个新的处理程序,它们只是因为某种原因而堆叠。
是不是可以取消绑定内联处理程序?
答案 0 :(得分:4)
如果您之前使用.bind()
添加了事件处理程序,则只能.unbind()
:
可以使用.unbind()附加.bind()附加的事件处理程序。
对于内联事件处理程序,请使用:
$("#container a").removeAttr("onclick");
或
$("#container a")[0].onclick = null;
<强> DEMO 强>
答案 1 :(得分:1)
我会这样做:
$(document).ready(
function(){
$("#container a").removeAttr("onclick");
$("#container a").on('click', function() {
alert("changed on the fly");
})
}
);