人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

jQueryについて質問

<a href="hoge" id="fuga" onClick="nantoka(a, b);" >クリック</a>

jQueryでonClickイベントの中身を書き換えたいのですが、
$("#fuga").attr("onClick", "henkou();");
みたいに書いても書き換わりませんでした。何か良い書き方はないでしょうか

●質問者: redara
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● うぃんど
●100ポイント

ブラウザの仕様ということらしく今も変わっていないみたいです。

ダイアリーにて対応策を書いておられる方がおられたので参考に。
http://d.hatena.ne.jp/ue10000/20100926/1285518676


a-kuma3さんのコメント
お、Google Chrome だと書き換わらない?!

redaraさんのコメント
こちらの記事は見ていたのですが、よくわからなかったというか何故かうまくいきませんでした。removeAttrしておけば再設定できるということですよね。

2 ● a-kuma3
●100ポイント ベストアンサー

jsFiddle で試してみました。
http://jsfiddle.net/a_kuma3/YGSmZ/

jQuery っぽい書き方じゃないということは別にして、処理の書き換えができているのが確認できると思います。
質問のコードから書き換えたのは、二ヶ所だけです。

attr メソッドでイベントハンドラが書き換わらない、と悩んでいるようですが、他のところに問題があるのではないですか?
別のエラーがあって、attr メソッドの呼び出しのところまで到達していない、とか。




追記です。
jQuery っぽい書き方をしてみました。

/* クリックしたときの処理を変更する */
function change() {
 $("#fuga").unbind("click").click(henkou);
}
 
/* クリックしたときのデフォルトの処理を設定する */
$(function() {
 $("#fuga").click(nantoka);
 });

jsFiddle で動作を確認できます。
http://jsfiddle.net/a_kuma3/U5JWA/1/


redaraさんのコメント
jQueryっぽい方が参考になります。なぜか上手くいかなかったりもしたのですが、関数書き換えるのではなく、クラス名を書き換えて、js内でclassNameを取得して処理を分岐させる方法で対応することで解決しました。 ありがとうございました。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ