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 に答える