2012年3月4日日曜日

jQueryを使うときは$の競合に気をつける

jQueryを使うときは、jQueryの別名参照の「$」を使用するけど、これの競合に注意しないといけないらしい。

例えば、こんなコードの用に「$」が既に定義されていた場合、$('body')はjQueryの呼び出しではなく、文字列変数の「$」を参照しているだけなので実行時にエラーになってしまう。(普通はこんなコードはないけど)

エラーの内容
Uncaught TypeError: Property '$' of object [object DOMWindow] is not a function

この競合を解決するために、jQueryを使うときは「$」を直接使うのではなく無名関数でwrapして使ってあげるのが一般的らしい。無名関数を使った場合は、こんな感じになるようだ。
これは、無名関数で引数を1つ(この場合は「$」)受け取っている。その引数には、最後のjQueryオブジェクトを渡してあげる。
あんまり理解出来なかったが、無名関数全体を括弧で囲んであげて、最後の「(jQuery)」部分でjQueryオブジェクトを引数に指定してあげてるようだ。