Почему функциональные псевдо, такие как: 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)')

Есть ли какая-либо веская причина, техническая или иная, для размещения здесь цитат? Единственные возможности, которые приходят на ум:

Consistency with :contains() which allows both quoted and unquoted arguments, as seen in the old Selectors spec. Except :contains() accepts strings/keywords, not selectors...

Consistency with the implementation of custom pseudos using $.expr[':'], which always allows quoted and unquoted arguments.

Consistency and ease of porting to their method counterparts .not() and .has() (just remove or split the outer quotes and change colons to periods?).

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

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

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

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