jQueryについて質問


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

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

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2013/03/12 23:17:07
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:a-kuma3 No.2

回答回数4974ベストアンサー獲得回数2154

ポイント100pt

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

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

  • onclick の nantoka 関数から引数 a, b を削除(宣言が無くて、エラーになるから)
  • A タグの向き先を # にした(テストのときに、別のページに飛ばされると鬱陶しいから)

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




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

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

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

id:redara

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

2013/03/12 23:16:30

その他の回答1件)

id:windofjuly No.1

回答回数2625ベストアンサー獲得回数1149

ポイント100pt

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

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

id:a-kuma3

お、Google Chrome だと書き換わらない?!

2013/03/11 09:26:06
id:redara

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

2013/03/12 23:19:43
id:a-kuma3 No.2

回答回数4974ベストアンサー獲得回数2154ここでベストアンサー

ポイント100pt

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

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

  • onclick の nantoka 関数から引数 a, b を削除(宣言が無くて、エラーになるから)
  • A タグの向き先を # にした(テストのときに、別のページに飛ばされると鬱陶しいから)

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




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

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

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

id:redara

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

2013/03/12 23:16:30

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません