3

我有这样的东西: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 事件,我无法解除绑定并绑定一个新的处理程序,它们只是出于某种原因堆叠。

是否可以取消绑定内联处理程序?

4

2 回答 2

4

如果您.unbind()之前已将事件处理程序附加为.bind()

使用 .bind() 附加的事件处理程序可以使用 .unbind() 删除。

对于内联事件处理程序,请使用:

$("#container a").removeAttr("onclick");

或者

$("#container a")[0].onclick = null;

演示

于 2012-09-01T22:45:00.950 回答
1

我会这样做:

$(document).ready(
    function(){
       $("#container a").removeAttr("onclick");
       $("#container a").on('click', function() {
          alert("changed on the fly");
       })
    }
);
于 2012-09-01T22:59:48.420 回答