jQuery. Как сделать регистронезависимый поиск по содержимому?


В базовом jQuery есть метод, который может фильтровать данные по их содержимому — я имею ввиду метод — или же фильтр — contains.

Но в нем ест одна проблема, которая делает его использование неполноценным и даже не нужным. Он регистрозависимый — т.е. строка "Privet" не равна строке "privet". Для страниц, которые предоставляют подобную фильтрацию простым пользователям — это недопустимый вариант. Человек, который не программист, никогда не поймет разницы в приведенных выше двух строках.

Поэтому предлагаю найденный в интернете вариант, который мне отлично помог.

jQuery.expr[":"].Contains = jQuery.expr.createPseudo(function(arg) {
    return function( elem ) {
        return jQuery(elem).text().toUpperCase().indexOf(arg.toUpperCase()) >= 0;

В этом примере мы создали новый фильтр, назвав его Containts — вы можете назвать его, как Вам угодно — я исходил из мысли о названии с большой буквы, т.к. данный метод не будет учитывать регистр.

Его использование — типичное для jQuery:

$('div:Contains("some TeXt")').addClass('highlight');
, ,

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *