Jqueryにて、1つのDOMに対して、2つのイベント(読み込みとクリック)を割り当てるスマートな書き方を教えて下さい。


具体的には、<input type id='hatenasan'>このタグが最初に呼び出されたときと、クリックされた時に同じ処理を実行したいです。

書き方がわからないので、今は2つ書いています。

--- < 現在 > ---

HTMLの呼び出し時と、hatenaさんがクリックされた時に「元気ですか?」と警告する処理。

$(function(){
  alert('元気ですか?');
  $('#hatenasan').click(function(e){alert('元気ですか?');});
});

---

これをもう少しスマートに掛けないものでしょうか。
たとえば、

$('#hatenasan').click(function(e){alert('元気ですか?');}).keyup(function(e){alert('元気ですか?');});

こんな感じでは書けないのでしょうか

回答の条件
  • 1人2回まで
  • 登録:2008/10/25 09:56:07
  • 終了:2008/11/01 10:00:03

回答(2件)

id:tilfin No.1

tilfin回答回数8ベストアンサー獲得回数02008/10/25 17:40:53

ポイント35pt

$(function(){

  $('#hatenasan').click(function(e){alert('元気ですか?');}).click();

});

でどうでしょうか。

id:cbic

うごきました!が、これだと、クリックだけでしか動かないように思えるのですが・・・。なぜ起動時にも動くのでしょうか・・・

2008/10/26 13:13:15
id:tilfin No.2

tilfin回答回数8ベストアンサー獲得回数02008/10/26 13:29:29

ポイント35pt

> うごきました!が、これだと、クリックだけでしか動かないように思えるのですが・・・。

> なぜ起動時にも動くのでしょうか・・・

jQuery オブジェクトの click() は引数があればイベント時の実行 function をセットする動作をし、

引数なしで呼び出すと実際にクリックイベントを起こす動作となるからです。

※この仕様は dblclick などの他のイベントでも同様です。


$(function(){ }内のコードはドキュメントのロード完了時に実行されるので、

イベントをセットし、 click(function(e){alert('元気ですか?');})

続けてイベントを起こすことで、click()

起動時にも動作するようになるわけです。

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

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません