1
2
3
4
5
6
7
8
9
10
11
jQuery.expr[':'].regex = function(elem, index, match) {
   var matchParams = match[3].split(','),
   validLabels = /^(data|css):/,
   attr = {
      method: matchParams[0].match(validLabels) ? matchParams[0].split(':')[0] : 'attr',
      property: matchParams.shift().replace(validLabels,'')
   },
   regexFlags = 'ig',
   regex = new RegExp(matchParams.join('').replace(/^\s+|\s+$/g,''), regexFlags);
   return regex.test(jQuery(elem)[attr.method](attr.property));
}

Вам необходимо указать атрибут и регулярное выражений для сравнения.

1
2
3
4
5
6
7
8
// Выбрать все элементы, ID которых начинается с гласной:
$(':regex(id,^[aeiou])');
 
// Выбрать все DIV атрибут class которых содержит цифры:
$('div:regex(class,[0-9])');
 
// выбрать все теги SCRIPT, SRC которых содержат jQuery:
$('script:regex(src,jQuery)');

Можно использовать css стили для поиска

1
2
3
4
5
// Выбрать все элементы, ширина которых в диапазоне от 100 до 300px:
$(':regex(css:width, ^[1-3]\\d{2}px$)');
 
// Выбрать все DIV, отображаемые не как блочные элементы:
$('div:not(:regex(css:display, ^block$))');

Поиск по значениям, хранимым в .data()

1
2
3
4
5
6
7
// добавляем data для всех картинок (просто пример);
$('img').each(function(){
   $(this).data('extension', $(this)[0].src.match(/\.(.{1,4})$/)[1]);
});
 
// Выбираем все картинки формата PNG и JPG:
$('img:regex(data:extension, png|jpg)');

источник: css-tricks.com

Оставьте свой комментарий