Как использовать регулярные выражения в селекторах jQuery?
Я ищу документацию по использованию подстановочных знаков или регулярных выражений (не совсем уверен в терминологии) с селекторами jQuery.
Я сам искал информацию, но не смог найти никаких сведений о синтаксисе и том, как это использовать. Не подскажет ли кто, где можно найти документацию по синтаксису?
ПРАВКА: Фильтры атрибутов позволяют выполнять выборку на основе шаблонов значений атрибутов.
5 ответ(ов)
Вот как можно найти элементы с помощью различных селекторов 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!
Если ваше использование регулярных выражений ограничивается проверкой, начинается ли атрибут с определенной строки, вы можете воспользоваться селектором jQuery с символом ^
.
Например, если вы хотите выбрать только те элементы <div>
, у которых атрибут id
начинается с "abc", вы можете использовать следующий код:
$("div[id^='abc']")
Много полезных селекторов для избежания использования регулярных выражений можно найти здесь: http://api.jquery.com/category/selectors/attribute-selectors/.
Вы можете использовать следующий код для извлечения значений, не содержащих буквы латинского алфавита, цифры и пробелы из атрибута 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);
Это сделает ваше регулярное выражение более универсальным.
Вы можете добавить функцию 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
позволяет гибко фильтровать элементы на основе различных данных, используя регулярные выражения.
Идентификаторы и классы всё ещё являются атрибутами, поэтому вы можете применить фильтр атрибутов с помощью регулярных выражений к ним, если вы выберете соответствующим образом. Более подробную информацию можно найти здесь:
http://rosshawkins.net/archive/2011/10/14/jquery-wildcard-selectors-some-simple-examples.aspx
Как узнать, какая радиокнопка выбрана с помощью jQuery?
Получение выбранного текста из выпадающего списка (select) с помощью jQuery
Как получить дочерние элементы селектора $(this)?
jQuery селекторы для пользовательских атрибутов данных с использованием HTML5
Проверка, отмечен ли чекбокс, с помощью jQuery