jQueryの小ネタです。
セレクタに使用するときエスケープが必要な文字
公式の説明によれば、この31字
!"#$%&'()*+,./:;<=>?@[\]^`{|}~
は2つのバックスラッシュ\\\
でエスケープする必要があります。
To use any of the meta-characters ( such as !"#$%&'()*+,./:;<=>?@[]^`{|}~ ) as a literal part of a name, it must be escaped with with two backslashes: \.
エスケープするメソッドを作っておいて
function selectorEscape(val){
return val.replace(/[ !"#$%&'()*+,.\/:;<=>?@\[\\\]^`{|}~]/g, '\\$&');
}
このようなときに
selectorを動的に組み立てたいようなときに使います。
function(form, val){
...
var selector = 'input[name="' + name + '"][value="' + selectorEscape(val) +'"]';
var found = form.find(selector);
...
}