Почему функциональные псевдо, такие как: not () и: has (), позволяют использовать аргументы в кавычках?

Видимо, как яобнаружили, комментируядругой ответ, JQuery (скорее его основной механизм выборашипение) позволяет вам привести аргумент к: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() который допускает как кавычки, так и кавычки, как видно изстарые спецификации селекторов, Кроме:contains() принимает строки / ключевые слова, а не селекторы ...

Согласованность с реализацией пользовательских псевдо с использованием$.expr[':'], который всегда позволяет в кавычках и без кавычек аргументы.

Последовательность и простота портирования на методы их аналогов.not() а также.has() (просто удалите или разделите внешние кавычки и измените двоеточия на точки?).

Но я могу'не найти никаких источников, чтобы поддержать или противостоять им. На самом деле, способность цитировать аргументы селектора сама по себе не• нигде не задокументировано, и, похоже, нет никакой разницы между цитированием и не цитированием аргумента:

$('div:not(span)')
$('span:has(span)')

Ответы на вопрос(1)

Ваш ответ на вопрос