Как использовать селектор jQuery для фильтрации элементов изотопа jQuery без учета регистра (поиск) - PullRequest
1 голос
/ 29 февраля 2012

Я играю с jQuery Isotope и хочу реализовать поиск элементов.Когда пользователь вводит текстовое поле, я меняю опцию фильтра следующим образом:

var newFilter = '[data-myAttr*="' + $('#mySearchBox').val() + '"]';
$('#myIsotopeContainer').isotope({filter: newFilter});

Я использую атрибут jQuery , содержащий селектор .Но он чувствителен к регистру, и я хочу быть чувствительным к регистру в .Как я могу это сделать?

Я смотрел на другие вопросы и результаты Google, которые предлагают использовать .filter(fn), но у меня не так много контроля с изотопом.Я просто даю ему селектор.

Ответы [ 3 ]

3 голосов
/ 29 февраля 2012

Посмотрев на источник изотопа, вы сможете передать функцию, подобную этой:

$('#myIsotopeContainer').isotope({ filter: function() {
        // case-insensitive pattern match:
        var pattern=new RegExp($('#mySearchBox').val(),'i');

        // test against 'data-myAttr':
        return pattern.test(this.attr('data-myAttr'));
    }
});

Изотоп просто делает .filter() вызов, чтобы выполнить собственную фильтрацию. Попробуйте и посмотрите, что получится.

1 голос
/ 29 февраля 2012

использовать нижний регистр в качестве протокола для всех атрибутов, а затем изменить ввод пользователя на нижний регистр

0 голосов
/ 19 апреля 2012

Я хочу дать ответ, связанный с этим вопросом, для людей вроде меня, которые делают это немного по-другому. Я хотел искать любой текст во всем элементе (или любых дочерних элементах), а не только в атрибуте. Если вы используете селектор: contains и хотите, чтобы он не учитывал регистр, вы должны расширить JQuery, как описано в этом отчете об ошибке . Для удобства выкладываю код ниже:

$.extend($.expr[':'], {
  'containsi': function(elem, i, match, array)
  {
    return (elem.textContent || elem.innerText || '').toLowerCase()
    .indexOf((match[3] || "").toLowerCase()) >= 0;
  }
});

Теперь вы можете использовать JQuery так же, как если бы вы использовали: contains ('SomeString'), но теперь вы можете использовать новое расширенное: containsi ('SomeString')

...