Селекторы Уровень 3: 4. Синтаксис селектора
Символы в селекторах могут быть экранированы с помощью обратной косой черты sh в соответствии с теми же правилами экранирования, что и CSS. [CSS21].
CSS21: 4.1.3 Символы и регистр
В CSS, идентификаторы (включая имена элементов, классы и Идентификаторы в селекторах) могут содержать только символы [a-zA-Z0-9] и символы ISO 10646 U + 00A0 и выше, плюс дефис (-) и знак подчеркивания (_); они не могут начинаться с ди git, двух дефисов или дефиса, за которым следует ди git. Идентификаторы также могут содержать экранированные символы
.
(полный стоп) - U+002E
, поэтому он не является допустимым символом в качестве части идентификатора и должен быть экранирован из-за этого.
.
в #music_playlist-2.7
указывает на селектор такого типа #idIdentifer.classIdentifer
, но .7
не является допустимым идентификатором класса, так как идентификаторы не могут начинаться с di git, поэтому в зависимости от того, как синтаксический анализатор для селектора Реализация может просто игнорировать эту ошибку в селекторе и считать .7
как часть предыдущего идентификатора, но это не правильно, по крайней мере, я не могу найти какую-либо часть об этом в спецификациях, которые бы оправдывали это:
Селекторы Уровень 3: 4. Синтаксис селектора
A селектор представляет собой цепочку из одной или нескольких последовательностей простых селекторов , разделенных комбинаторами . Один псевдоэлемент может быть добавлен к последней последовательности простых селекторов в селекторе.
A последовательность простых селекторов представляет собой цепочку простых селекторов , которые не являются разделенный комбинатором . Он всегда начинается с селектора типа или универсального селектора. Никакой другой селектор типа или универсальный селектор не допускается в последовательности.
A простой селектор является либо селектором типа , универсальный селектор , селектор атрибута , селектор класса , селектор идентификатора или псевдокласс .
Универсальный селектор , записанное как CSS квалифицированное имя [CSS3NAMESPACE] со звездочкой (* U + 002A) в качестве локального имени, [...] Если универсальный селектор , представленный *
[. ..] не является единственным компонентом последовательности простых селекторных селекторов или за ней сразу следует псевдоэлемент , тогда *
может быть опущено и подразумевается наличие универсального селектора .
Поэтому, если вы хотите использовать идентификатор music_playlist-2.7
в вашем querySelectorAll
, запишите его так:
document.querySelectorAll('#music_playlist-2\\.7 input[name="payment_form_function"]');
Или, если вы хотите использовать его в css правиле:
#music_playlist-2\.7 input[name="payment_form_function"] {
color: red;
}