今さら聞けないjQuery実行パターンまとめ

なんとなく使っているだろう.ready()メソッドについて詳細に見てみましょう。

.ready()メソッド

.ready()メソッドという呼び方がパッとしない人もいると思います。こういうのです↓

$(function(){
  // .ready()が呼び出されたときに実行されるハンドラ
});

jQueryを実行する際のおまじないみたいなものですね。これの中にjQueryコードを書いていくとページロード時(Documentの読み込みが完了時)に実行してくれます。

何気なく使ってる人も多いと思いますが、実際のところこれは何?ということで、少し掘り下げてみましょう。

.ready()を使う際の形式

jQuery APIによれば、以下の3つが.ready()として同じように使えるようです。

  1. $(document).ready(handler)
  2. $().ready(handler) (推奨されていない使い方)
  3. $(handler)
handler
DOM Readyの時点で実行されるfunction
無名関数function(){}がこれに当たります

つまり、それぞれを実際に使う場合は

1. の場合

$(document).ready(function(){
  // 実行する命令
});

見て分かる通り、Documentがreadyになったら、つまりDocumentの読み込みが完了したら実行します。

2. の場合(使えるが推奨はされていない)

$().ready(function(){
  // 実行する命令
});

1.のdocumentを省略した状態。ただし公式ドキュメントでも注意書きがある通り、この形式では使わないほうがよさそうです。

3. の場合

$(function(){
  // 実行する命令
});

こちらは、一番よく見る例のアレですね。$(document).readyを$と省略した形です。一番文字数が少なくて済むのでよく使われています。

$ = jQuery

jQueryを使っていると$という文字をたくさん使いますが、これはjQueryのエイリアスになっています。つまり以下のコードは同じことを意味します。

$('a').click(function(){});
jQuery('a').click(function(){});

よく知られているところでは、Prototype.jsも同じように$を使っていて、jQueryと同時に使うと$の衝突が起こります。この場合、$.noConflict()を使って

var $j = jQuery.noConflict();

のようにして、$の代わりに$jをjQueryとして使うことで回避したりします。

強制的に$をjQueryとして使う場合

より安全に、.ready()の中だけは$をjQueryのエイリアスとして使う場合、次のように実行します。

jQuery(document).ready(function($){
  // この中では$はjQueryとして扱われる
});

コメントに書いたように、この書き方だと、Prototypeなどの$を使っているライブラリを同時にロードしていても、.ready()の中だけは$をjQueryとして扱うことができます。ただし、Prototypeの$は当然使うことは出来ないです。

さらに省略形と合わせることもできます。このほうが使いやすいでしょう。

jQuery(function($){
  // この中では$はjQueryとして扱われる
});

実行パターンまとめ

というわけで推奨されていない物以外をまとめると以下の4つになります。どれを使っても実行結果は同じなので、好みになると思いますがおすすめはトラブルが少なそうな4.ですね。

1. 基本のパターン

$(document).ready(function(){
  // 実行する命令
});

2. よく使われているパターン

$(function(){
  // 実行する命令
});

3. 他のライブラリも使うことを考慮した場合のパターン

jQuery(document).ready(function($){
  // 実行する命令
});

4. 2と3を組み合わせたパターン

jQuery(function($){
  // 実行する命令
});

ちょっと補足

THE HAM MEDIAのが補足を書いてくれましたので、こちらもあわせて読むとさらに理解が深まると思います。

参考

.ready() – jQuery API
http://api.jquery.com/ready/

何か役に立つことがあったらシェアしてみてください

このエントリーをはてなブックマークに追加

Comments: 1 - Leave a comment

  1. pontaro

    $(document).bind(‘ready’, callback);
    も可能ですよね。この方法だと
    $(document).unbind(‘ready’);
    でunbindできるので(あんまりそういう機会は無いですが)、役に立つことがあるかもしれません。

    $(callback)
    だとunbindできないんですよね~
    1.4系だと違うのかな…

Leave a comment

Trackbacks: 1

Trackback URL for this entry
Listed below are links to weblogs that reference
今さら聞けないjQuery実行パターンまとめ from 5509
  1. trackback from usualomaの日記

    Re: 今さら聞けないjQuery実行パターンまとめ 【ちょっとだけ補足】

    細かい点をちょっとだけ補足してみました。 ネタ元 今さら聞けないjQuery実行パターンまとめ Re: 今さら聞けないjQuery実行パターンまとめ【実行のタイミングって?ちょっとした補足】

Author

nori
nori
- UI Engineer
Location
- ,