По-видимому, как я обнаружил, комментируя еще один ответ, jQuery (скорее, его основной механизм выбора Sizzle) позволяет привести аргумент в селектор :not()
, а также селектор :has()
. Для остроумия:
$('div:not("span")')
$('span:has("span")')
В Селекторах стандарта кавычки всегда представляют собой строку и никогда не относятся к селектору или ключевому слову, поэтому цитирование аргумента :not()
всегда недействителен. Это не изменится в Селекторах 4.
Вы также можете увидеть, что это нестандартный синтаксис, добавив неподдерживаемый CSS-селектор, например :nth-last-child(1)
в результате чего селектор полностью завершится:
$('div:not("span"):nth-last-child(1)')
$('span:has("span"):nth-last-child(1)')
Есть ли веская причина, техническая или иная, для предоставления котировок здесь? Единственные возможности, которые приходят на ум, - это:
-
Согласованность с
:contains()
, которая позволяет использовать как цитируемые, так и неуказанные аргументы, как показано в старой спецификации Selectors. За исключением:contains()
принимает строки/ключевые слова, а не селекторы... -
Согласованность с реализацией пользовательских псевдостей с использованием
$.expr[':']
, которая всегда позволяет использовать котируемые и некотируемые аргументы. -
Согласованность и простота переноса на их копии методов
.not()
и.has()
(просто удалите или разделите внешние кавычки и измените двоеточие на периоды?).
Но я не могу найти никаких источников для поддержки или против них. Фактически, возможность цитирования самих селекторных аргументов нигде не документируется, и не существует никакой разницы между цитированием и не цитированием аргумента:
$('div:not(span)')
$('span:has(span)')