Как экранировать квадратные скобки — jQuery

Как экранировать квадратные скобки — jQuery

Из названия статьи не совсем понятно, что имелось ввиду. Но это лишь потому, что идея написания статьи возникла в то время, когда мне понадобилось выбрать из DOM-а инпут, содержащий дата атрибут вида: s[1]. То есть элемент в разметке выглядел вот так:

<input type="text" data-filter="s[1]">

И это ввело меня в ступор... Как получить этот элемент в jQuery не перебирая все инпуты?

Дело в том, что обычный $('input[data-filter=s[1]]') естественно вызывает ошибку. Поэтому нужно что-то думать. Можно получить его через фильтр вот так:

$('input[data-filter]').filter(function() {return $(this).data('filter')=='s[1]';})

Но это решение не изящное... Думаем дальше.

А что тут думать, если специальные символы #;&,.+*~\':\"!^$[]()=>|/ нужно экранировать двумя слэшами \\. Поэтому итоговое выражение будет:

$('input[data-filter=s\\[1\\]]')
26.03.17
Для просмотра сайта обновите браузер.