Jqueryに関する質問です。1つの要素に対して、2つのイベントを設定して、同じ関数を実行する場合に、シンプルに1行で書くことはできますか?


今は以下のようにやっています。


■<div id=hoge>がkeyupされるか、チェンジしたら、hoge_functionを実行。

$("#hoge").change(function(){hoge_function($(this))}).change();
$("#hoge").keyup(function(){hoge_function($(this))}).keyup();

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2008/11/18 15:13:30
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:karaki No.1

回答回数17ベストアンサー獲得回数6

ポイント60pt

jQueryでは返り値がjQueryオブジェクトなので、一行に連続して記述すれば、実現できます。

$("#hoge").change(function(){hoge_funcition($(this))}).keyup(function(){hoge_function($(this))});

それぞれの行につけている、「change()」と「keyup()」はわざとトリガーを引いているのですか?

それでしたら、どちらも後ろにつければ大丈夫です。

$("#hoge").change(function(){hoge_funcition($(this))}).keyup(function(){hoge_function($(this))}).change().keyup();

ただし、どちらも同じ処理でしたらどちらかを記述すればよいですかね。

$("#hoge").change(function(){hoge_funcition($(this))}).keyup(function(){$(this).change();}).change();

これは、keyupが呼ばれたらchangeのトリガーを引いています。これで、実際の処理関数は「chagen」のほうにだけ記述すればすむので少し楽になると思います。

id:cbic

ありがとうございます!まさに!できました。

2008/11/18 15:13:21

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

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

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

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

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