もともと設定されているイベントハンドラをすり替える
次のようなHTMLがあったとする。
<button id="hoge" onclick="hogehoge();">click!</button>
このボタンをクリックすれば当然hogehoge関数が実行される。
これを、HTML上のonclickを直接書き換えること無しに、fugafuga関数が呼ばれるようにすり替えたい。
jQueryのメソッドを調べていたらunbind/bindというのが使えそうだったので、やってみた。
$('#hoge').unbind("click", hogehoge).bind("click", fugafuga);
結果はhogehogeが呼ばれてから、fuagafugaが呼ばれた。unbindメソッドはbindメソッドで登録したもののみ削除できるようで、最初から登録されているhogehoge関数は削除されないみたい。
で、結局は以下のようにした。あんまりかっこよくないなぁ。もっといい方法がありそうな気もするけど。
$('#hoge').attr("onclick", "").bind("click", fugafuga);