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