Aleksei_Segodin
@Aleksei_Segodin
арт директор / дизайнер

Как с помощью CSS селектора выбрать все элементы у которых есть data- атрибуты?

Задача 1:
выбрать все элементы из списка у которых есть хоть какой-то data-... атрибут. При этом, не важно что будет стоять после data- — значений может быть бесконечное множество и хардкод тут не пройдёт.

<ul>
    <li></li>
    <li data-color=""></li> <!--искомый элемент-->
    <li data-weight=""></li> <!--искомый элемент-->
    <li></li>
    <li data-xyz=""></li> <!--искомый элемент-->
</ul>


Задача 2:
выбрать все элементы у которых есть совпадение по data-my-. Например:

<ul>
    <li></li>
    <li data-my-color=""></li> <!--искомый элемент-->
    <li data-weight=""></li>
    <li></li>
    <li data-my-xyz=""></li> <!--искомый элемент-->
</ul>


Может можно сделать это как-то с помощью regex? Я до сих пор находил примеры regex в CSS только для значений атрибутов, но не для их названий.

Заранее спасибо!
  • Вопрос задан
  • 972 просмотра
Решения вопроса 1
melodyn
@melodyn
Лучше нативная смерть, чем фреймворковая жизнь.
Так речь о css-выборке или всё-таки js? На чистом CSS регулярок нет (насколько мне известно), но можно делать выборки типа [data-val*=someVal] или [data-val^=someVal].

Как вариант использования чистого css - задай им одинаковый атрибут, например, name или class.

Ну, а если JS, то нужно сначала выбрать все li и получить их аттрибуты, а даже уже регуляркой сравнивать, начинаются ли они с data. Примерно как это может быть реализовано: https://jsfiddle.net/bmqxqdu0/
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы