Mail.ruПочтаМой МирОдноклассникиИгрыЗнакомстваНовостиПоискComboВсе проекты

Как правильно вернуть значение функции?

Константин Ефименко Мастер (1574), закрыт 1 месяц назад
Я составил элементарный плагин:
https://jsfiddle.net/zr0Ly7jm/

Суть его проста, отфильтровать значение по классу и вернуть необходимое значение в селектор. В данном примере, я окрашиваю div(ы) непосредственно в плагине, но моя цель совсем иная. Я хочу передавать селектор куда угодно, будь то функция или... а если подумать ".css()" это тоже функция, только готовая (вообщем манипулировать как хочу).

Выглядеть это должно так:
$('.btn').on('click', function()
{
$(':regex([class^="ord-\\d+"])').css('background-color', 'red');
});

А не так как сейчас в плагине, но все мои попытки вернуть значения тщетны (возвращается null).

Что я делаю не так? Распишите как правильно вернуть значения (для чайников). Особо бананами не кидайтесь, это мой первый плагин.
Лучший ответ
Elepsis Eclipse Просветленный (33548) 3 месяца назад
https://jsfiddle.net/OPTlMUS/7n2b41af/

$(document).ready(function() {
  $('.btn').on('click', function() {
    var a = $(':regex(class[ord-\\d+])');
    var b = $(':regex(data-test[ord-\\d+])');

    a.css('background-color', 'red');
    b.css('background-color', 'red');
  });
});

jQuery.expr[':'].regex = function(elem, index, match) {
  match = match[3].match(/(^.*?)\[([^\]]+)/);

  var attr = match[1];
  var reg = match[2];

  return new RegExp(reg).test( $(elem).attr(attr) );
}
_________________________________

https://regex101.com/ - регулярки легче разбирать там.

match = match[3].match(/(^.*?)\[([^\]]+)/);

Здесь две группы захвата.
Первая - от начала строки до символа [
Вторая - [^\]]+ означает "любой символ кроме ] один или много раз"
Комментарий удален
Остальные ответы
Похожие вопросы
Также спрашивают