Для чего нужны «дубликаты» селекторов псевдоклассов jQuery? - PullRequest
2 голосов
/ 12 января 2020

Использование селектора псевдокласса

$( "input:password" )

представляется эквивалентной и, тем не менее, более медленной версией

$( 'input[type="password"]' )

(медленнее, поскольку, как отмечалось, в связанном do c ":password является расширением jQuery и не является частью спецификации CSS, поэтому запросы, использующие :password, не могут воспользоваться преимуществом повышения производительности, обеспечиваемым собственным методом DOM querySelectorAll() . ")

Возникает вопрос: существует ли заявленная причина, по которой существует этот селектор псевдоклассов? Какие потенциальные преимущества он предлагает, если таковые имеются? В каких случаях будет разница в поведении?

1 Ответ

5 голосов
/ 12 января 2020

:password действительно полезен только в API jQuery для симметрии / полноты, поскольку он точно такой же, как [type=password].

Но :text - это не то же самое, что [type=text], поскольку он также соответствует элементам input, которые не имеют атрибута type (и поэтому обрабатываются браузером как type="text"). [type=text] не сделал бы этого. Вам придется использовать input[type=text] в сочетании с input:not([type]).

Аналогично, :button - это не просто input[type=button], оно также соответствует button элементам.

Аналогично, :input - это не просто синоним input, он соответствует элементам input, textarea, select и button.

Таким образом, в общем случае их цель - помочь программистам не забыть включить вещи, которые они, вероятно, намеревались включить (например, input элементы без type) и / или краткость.

Циклы вернуться к :password, это просто для симметрии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...