6

Как использовать регулярные выражения в селекторах jQuery?

52

Я ищу документацию по использованию подстановочных знаков или регулярных выражений (не совсем уверен в терминологии) с селекторами jQuery.

Я сам искал информацию, но не смог найти никаких сведений о синтаксисе и том, как это использовать. Не подскажет ли кто, где можно найти документацию по синтаксису?

ПРАВКА: Фильтры атрибутов позволяют выполнять выборку на основе шаблонов значений атрибутов.

5 ответ(ов)

3

Вот как можно найти элементы с помощью различных селекторов jQuery.

Если вам нужно найти элементы, содержащие заданную строку, используйте следующий код:

$("input[id*='DiscountType']").each(function (i, el) {
    // Здесь будет массив элементов
});

Если требуется найти элементы, начинающиеся с заданной строки:

$("input[id^='DiscountType']").each(function (i, el) {
    // Здесь будет массив элементов
});

Для поиска элементов, заканчивающихся на заданную строку, используйте такой код:

$("input[id$='DiscountType']").each(function (i, el) {
    // Здесь будет массив элементов
});

Если вы хотите выбрать элементы, id которых не является заданной строкой:

$("input[id!='DiscountType']").each(function (i, el) {
    // Здесь будет массив элементов
});

Для выбора элементов, имя которых содержит заданное слово (разделяемое пробелами):

$("input[name~='DiscountType']").each(function (i, el) {
    // Здесь будет массив элементов
});

Если хотите выбрать элементы, у которых id равен заданной строке или начинается с этой строки, за которой следует дефис:

$("input[id|='DiscountType']").each(function (i, el) {
    // Здесь будет массив элементов
});

Эти примеры помогут вам эффективно находить элементы в DOM с помощью jQuery!

0

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

Например, если вы хотите выбрать только те элементы <div>, у которых атрибут id начинается с "abc", вы можете использовать следующий код:

$("div[id^='abc']")

Много полезных селекторов для избежания использования регулярных выражений можно найти здесь: http://api.jquery.com/category/selectors/attribute-selectors/.

0

Вы можете использовать следующий код для извлечения значений, не содержащих буквы латинского алфавита, цифры и пробелы из атрибута value элемента с id id:

var test = $('#id').attr('value').match(/[^a-z0-9 ]+/);

Давайте разберем, что здесь происходит:

  • $('#id') выбирает элемент с идентификатором id с помощью библиотеки jQuery.
  • .attr('value') получает значение атрибута value этого элемента.
  • .match(/[^a-z0-9 ]+/) использует регулярное выражение для поиска подстрок, не соответствующих латинским буквам (a-z, регистр не важен), цифрам (0-9) и пробелу.

Результатом выполнения этого кода будет массив, содержащий все найденные совпадения. Если совпадений не найдено, test будет равно null.

Имейте в виду, что если вы хотите, чтобы регулярное выражение было регистронезависимым (чтобы захватывать как заглавные, так и строчные буквы), вы можете добавить флаг i:

var test = $('#id').attr('value').match(/[^a-z0-9 ]+/i);

Это сделает ваше регулярное выражение более универсальным.

0

Вы можете добавить функцию jQuery, которая позволит вам фильтровать элементы на основе регулярного выражения. Вот пример реализации:

(function($){
    $.fn.regex = function(pattern, fn, fn_a){
        var fn = fn || $.fn.text; // Если функция не передана, используем $.fn.text по умолчанию
        return this.filter(function() {
            return pattern.test(fn.apply($(this), fn_a)); // Фильтруем элементы по регулярному выражению
        });
    };
})(jQuery);

Теперь вы можете использовать эту новую функцию для выбора элементов на странице. Например:

$('span').regex(/Sent/)

Этот код выберет все элементы <span>, текст которых соответствует регулярному выражению /Sent/.

Вы также можете использовать функцию для фильтрации по другим атрибутам. Например:

$('span').regex(/tooltip.year/, $.fn.attr, ['class'])

Эта строка кода выберет все элементы <span>, классы которых соответствуют регулярному выражению /tooltip.year/.

Таким образом, функция regex позволяет гибко фильтровать элементы на основе различных данных, используя регулярные выражения.

0

Идентификаторы и классы всё ещё являются атрибутами, поэтому вы можете применить фильтр атрибутов с помощью регулярных выражений к ним, если вы выберете соответствующим образом. Более подробную информацию можно найти здесь:
http://rosshawkins.net/archive/2011/10/14/jquery-wildcard-selectors-some-simple-examples.aspx

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь