Есть ли причина использовать селектор '* .class' над '.class'? - PullRequest
3 голосов
/ 22 марта 2011

Я нашел это в коде и не знаю, какой смысл использовать *.class селектор над .class селектором.

Ответы [ 4 ]

11 голосов
/ 22 марта 2011

В этом нет никакого смысла, будь то в контексте селектора jQuery ( Sizzle ) или в селекторе CSS. И *.class, и .class эквивалентны с точки зрения соответствия элементов и специфики.

Символ * имеет значение только тогда, когда используется сам по себе для ссылки на любой элемент; это подразумевается в тот момент, когда вы используете любой другой простой селектор без селектора типа. Даже тогда вы редко, если вообще когда-либо, будете нуждаться в подключении событий или манипулировании свойствами каждого элемента в DOM.

Если вы собираетесь использовать классы, псевдоклассы, идентификаторы и т. Д., То нет смысла использовать там универсальный селектор, поскольку выбранные элементы будут соответствующим образом фильтроваться.

Кроме того, вот один недостаток использования * с другими селекторами, процитированный из документации jQuery :

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

И вот что говорит Селектор :

Если универсальный селектор, представленный * (то есть без префикса пространства имен), не является единственным компонентом последовательности простых селекторов селекторов или сразу за ним следует псевдоэлемент, тогда * может быть опущено и подразумевается присутствие универсального селектора.

Примеры:

  • *[hreflang|=en] и [hreflang|=en] эквивалентны,
  • *.warning и .warning эквивалентны,
  • *#myid и #myid эквивалентны.
1 голос
/ 22 марта 2011

Они примерно эквивалентны - звездочка только дополнительно указывает, к каким объектам указанного класса применить выбор.

 .class // Selects all of the specific class
*.class // Selects all of the specific class - where * can be a div, li, etc.
0 голосов
/ 22 марта 2011

Преимущества не будет получено - я думаю, что есть проблема с производительностью, если вы используете подстановочный знак с дополнительными селекторами:

Внимание: универсальный или универсальный, селектор очень медленный, кроме когда используется сам по себе.

Кроме этого - без разницы

0 голосов
/ 22 марта 2011

Нет, нет оснований указывать *.class более .class

* - это символ подстановки, что означает «применять это к чему угодно», но это просто поведение встроенного селектора.

Однако, он мог быть добавлен кем-то, кто пытался быть явно документальным, перед лицом:

Не выбирайте определенный тип элемента, но соответствуйтевсе типы элементов

Но это верно только в том случае, если ваша внутренняя нормальная организация кода имеет тип:

$('div.class')
$('a.class')
$('a:first')

и т. д.

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