Селектор потомков в div p
выбирает p
потомков div
.
Селектор :has()
в div:has(p)
выбирает div
, если он содержит какие-либо элементы p
.
Жирные части - это все, что вам нужно знать. Остальные можно рассматривать как простые условия относительно того, какие элементы этих типов выбраны.
В терминах селектора CSS, ключевой селектор - самый правый внешний простой селектор. Тип элементов, которые выбирает jQuery (или анализатор CSS браузера), - это тот, который находится в селекторе ключей.
В первом селекторе клавишей является p
, потому что это самый правый, встречающийся после комбинатора-потомка (пробел). Это означает, что будет возвращена коллекция p
элементов.
В случае :has()
, который является псевдоклассом, p
является «внутренним» простым селектором, который является частью :has()
псевдокласса , а не частью весь «внешний» селектор. Поэтому ключ в этом селекторе div
, а не p
. Это означает, что будет возвращена коллекция div
элементов, а не p
элементов в первом селекторе.