jquery事件处理程序堆叠

时间:2012-09-01 22:42:32

标签: javascript jquery html

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

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

2 个答案:

答案 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");
       })
    }
);