Всем давно известно, что jQuery легко расширяем. Сегодня мы добавим новый селектор — :regex.
Расширяем jQuery
Добавляем приведенный ниже код на те страницы, на которых хотим использовать :reget-селектор.
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)); }
Использование :regex
// Выберет все DIVы с классами, содержащими числа:
$('div:regex(class,[0-9])');
// Выберет все SCRIPT тэги с параметром SRC содержащую строку jQuery:
$('script:regex(src,jQuery)');
// Выберет все элементы с параметром width между 100 и 300:
$(':regex(css:width, ^[1-3]\\d{2}px$)');
Внимание! Вместо одиночного backslash’a, нужно использовать двойной backslash, например \\d, \\S, \\/, \\.
ссылка на оригинал статьи http://habrahabr.ru/post/165187/
Добавить комментарий