<a href="hoge" id="fuga" onClick="nantoka(a, b);" >クリック</a>
jQueryでonClickイベントの中身を書き換えたいのですが、
$("#fuga").attr("onClick", "henkou();");
みたいに書いても書き換わりませんでした。何か良い書き方はないでしょうか
jsFiddle で試してみました。
http://jsfiddle.net/a_kuma3/YGSmZ/
jQuery っぽい書き方じゃないということは別にして、処理の書き換えができているのが確認できると思います。
質問のコードから書き換えたのは、二ヶ所だけです。
attr メソッドでイベントハンドラが書き換わらない、と悩んでいるようですが、他のところに問題があるのではないですか?
別のエラーがあって、attr メソッドの呼び出しのところまで到達していない、とか。
/* クリックしたときの処理を変更する */ function change() { $("#fuga").unbind("click").click(henkou); } /* クリックしたときのデフォルトの処理を設定する */ $(function() { $("#fuga").click(nantoka); });
jsFiddle で動作を確認できます。
http://jsfiddle.net/a_kuma3/U5JWA/1/
ブラウザの仕様ということらしく今も変わっていないみたいです。
ダイアリーにて対応策を書いておられる方がおられたので参考に。
http://d.hatena.ne.jp/ue10000/20100926/1285518676
お、Google Chrome だと書き換わらない?!
こちらの記事は見ていたのですが、よくわからなかったというか何故かうまくいきませんでした。removeAttrしておけば再設定できるということですよね。
jsFiddle で試してみました。
http://jsfiddle.net/a_kuma3/YGSmZ/
jQuery っぽい書き方じゃないということは別にして、処理の書き換えができているのが確認できると思います。
質問のコードから書き換えたのは、二ヶ所だけです。
attr メソッドでイベントハンドラが書き換わらない、と悩んでいるようですが、他のところに問題があるのではないですか?
別のエラーがあって、attr メソッドの呼び出しのところまで到達していない、とか。
/* クリックしたときの処理を変更する */ function change() { $("#fuga").unbind("click").click(henkou); } /* クリックしたときのデフォルトの処理を設定する */ $(function() { $("#fuga").click(nantoka); });
jsFiddle で動作を確認できます。
http://jsfiddle.net/a_kuma3/U5JWA/1/
jQueryっぽい方が参考になります。なぜか上手くいかなかったりもしたのですが、関数書き換えるのではなく、クラス名を書き換えて、js内でclassNameを取得して処理を分岐させる方法で対応することで解決しました。
ありがとうございました。
jQueryっぽい方が参考になります。なぜか上手くいかなかったりもしたのですが、関数書き換えるのではなく、クラス名を書き換えて、js内でclassNameを取得して処理を分岐させる方法で対応することで解決しました。
2013/03/12 23:16:30ありがとうございました。