jQueryにて”[]”を含むidをセレクタに指定する場合の注意

HTMLフォームからポストされたデータをPHPなどのサーバサイドプログラム(以下SSP)に引き渡す際、
フォームの名前をname[n]といった形式にすることで、SSP側で配列として扱うことができる。

こうした、name[n]というようなフォーム名(およびフォームID)を設定した上で、
フロントエンド側において、jQueryを用いた処理を行う場合、
name[n]という文字列をそのままセレクタに指定したのでは正常に取り扱うことができない。

”[]”という文字列は、jQueryセレクタにおいて、
属性フィルタを設定する際に使用される意味のある文字列であるため、
そのままでは”フォーム名の一部”としては扱われない。

以下のように”\(バックスラッシュ)”を二つ重ねてエスケープする必要がある。

$("#name\\[n\\]")

これは、”:(コロン)”や”.(ピリオド)”といった文字列をフォーム名に含む場合にも適応される。
これらの文字列も、”[]”と同様、jQueryセレクタとして意味のある文字列として扱われるためである。