2010年03月22日

jQueryでdocument.getElementByIdと等価を取る

jQueryで「$("#id")」と書くと、返ってくるのはjQueryのObjectで、getElementByIdで返ってくるような生のElementオブジェクトは取れない。

生のElementを取ろうと思った場合は「$("#id")[0]」と書くか「$("#id").get(0)」と書けば良いらしい。

参考サイト
http://groups.google.com/group/jquery-en/browse_thread/thread/fa48e5649bb64216?pli=1

prototype.jsはJavascriptの中身いじって機能を増やしてる風なので、「$("id")」をするとElementそのものが帰ってくるけど、jQueryの場合は操作する為の皮を被せてる風なので(お行儀はいいよね、こっちの方が)、こうなるらしい。

ちなみにget(0)を使った場合も[0]を使った場合も、要素が存在しない場合はundefinedが返ってくる。

通常、jQuery使うならElementオブジェクトに直接アクセスすることはなさそうだけど、先日からOpenSocialの勉強をしていて、向こうのAPIに引数としてElementオブジェクトを渡さないといけないことがあるようなので、上記のような記述が必要になった。