もともと設定されているイベントハンドラをすり替える

次のような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);