jQueryセレクタのエスケープ

  • 42
    Like
  • 0
    Comment
More than 1 year has passed since last update.

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