読者です 読者をやめる 読者になる 読者になる

valid,invalid

関心を持てる事柄について

jQuery セレクターのエスケープにはバックスラッシュを使う

以下のような HTML 要素がある時に

<input type="text" id="hatena.jp" />
$('#hatena.jp')

上記のセレクターではこの要素を取得できない。 id == "hatena.jp" ではなく id == "hatena" && class.include?('jp') にマッチする要素を探してしまう。

メタ文字 (!"#$%&'()*+,./:;<=>?@[\]^{|}~) を含む場合は\` (two backslashes) でエスケープする必要がある。

$('#hatena\\.jp')

そもそもこうした文字を含まないよう実装すべきとは思うものの、id や class ではなく data attribute あたりだと気づかずに起こったりしそう。

参考

javascript - How do I get jQuery to select elements with a . (period) in their ID? - Stack Overflow

Selectors | jQuery API Documentation