Подтвердить что ты не робот

Как правильно избежать значений атрибутов в селекторе css/js [attr = значение]?

Как мне избежать атрибутов в селекторе css/js attibute [attr=value]?

В частности, это правильно?

document.querySelector('input[name="test[33]"]')

Я ищу "стандартный способ" этого, если таковой имеется, потому что я не хочу, чтобы Sizzle использовал тяжелую функцию резервного копирования

4b9b3361

Ответ 1

Да, это один правильный подход. В Спецификации выбора 3-го уровня указано следующее:

Значения атрибутов должны быть идентификаторами или строками CSS.

В примере в вашем вопросе используется строка в качестве значения атрибута. "Идентификатор" определяется следующим образом:

В CSS идентификаторы... могут содержать только символы [a-zA-Z0-9] и символы ISO 10646 U + 00A0 и выше, плюс дефис (-) и подчеркивание (_); они не могут начинаться с цифры, двух дефисов или дефисов, за которыми следует цифра. Идентификаторы также могут содержать экранированные символы и любой символ ISO 10646 в виде числового кода...

Итак, следуя этому, также законно избегать специальных символов и опускать кавычки:

document.querySelector('input[name=test\\[33\\]]')