jQueryセレクタのエスケープ

  • 43
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

jQueryの小ネタです。

セレクタに使用するときエスケープが必要な文字

公式の説明によれば、この31字

 !"#$%&'()*+,./:;<=>?@[\]^`{|}~

は2つのバックスラッシュ\\\でエスケープする必要があります。

Category: Selectors

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);
...
}