jquery docs から直接:
メタ文字 (名前のリテラル部分など) を使用する場合は、2!"#$%&'()*+,./:;<=>?@[\]^&a{|}~)
つのバックスラッシュで文字をエスケープする必要があります: \ 。id="foo.bar"
$("#foo\\.bar")
これらのメタ文字を回避するのに役立つ関数はありますか?</p>
jquery docs から直接:
メタ文字 (名前のリテラル部分など) を使用する場合は、2!"#$%&'()*+,./:;<=>?@[\]^&a{|}~)
つのバックスラッシュで文字をエスケープする必要があります: \ 。id="foo.bar"
$("#foo\\.bar")
これらのメタ文字を回避するのに役立つ関数はありますか?</p>
jQuery のバグに関するこのビデオをチェックしてください。著者は、正規表現を使用してすべての jQuery セレクターを適切にエスケープする関数を書いています @52:18。補足: このビデオは素晴らしいので、jQuery を使用するすべての開発者はこのビデオを見る必要があります。
後世のために転写:
String.prototype.escapeSelector = function () {
return this.replace(
/([$%&()*+,./:;<=>?@\[\\\]^\{|}~])/g,
'\\$1'
);
};
これを次のように使用します。
$('#' + 'foo.bar'.escapeSelector());