Идеальное количество идентификаторов в документе DOM или HTML - PullRequest
5 голосов
/ 27 мая 2011

Я действительно сосредоточился на javascript и повышении производительности моего сайта.Одна вещь, которую я часто делаю, это динамическое создание элементов и доступ к этим элементам с помощью идентификаторов.

Может быть, вы можете помочь мне с некоторыми вопросами.поддерживает предоставление каждому интересному узлу в документе уникального идентификатора?

Какое идеальное количество идентификаторов в документе?

Есть лимаксимальное количество идентификаторов для документа?

С точки зрения производительности, получение элемента по классу css медленнее, чем получение по идентификатору?

Спасибо, ребята, за ваши ответы.Если у вас есть какие-либо дополнительные примечания к этим вопросам о dom и доступе к ним, будем благодарны.

Спасибо.

Ответы [ 2 ]

6 голосов
/ 27 мая 2011

Я не знаю ни одного реального наказания за свободное использование значений "id", кроме одного раздражения IE, Safari и Chrome, продвигающего значения "id" в window свойствах. Однако хороший JavaScript-код должен справиться с этим.

Обратите внимание, что:

  • значения "id" должны быть абсолютно уникальными в документе (странице). Нельзя использовать одно и то же значение id для нескольких элементов.
  • Поиск по «id» выполняется намного быстрее, чем поиск любым другим способом.

В современных браузерах поиск по классам может быть довольно быстрым, но это только потому, что работа по его выполнению была погружена в низкоуровневый код поддержки браузера (возможно, поддерживаемый более сложными внутренними структурами данных, кэшами и т. Д.) ). Имена классов также очень важны как для простой семантической разметки, так и для использования клиентским кодом, поэтому я не говорю, что классы плохие или что-то в этом роде. Фактически бывают ситуации, когда делать вещи исключительно с помощью «id» было бы довольно глупо, когда использование классов вводило бы простоту.

изменить & mdash; по состоянию на конец (конец 2013 года) Firefox создает window свойств для элементов с атрибутами «id». (

1 голос
/ 27 мая 2011
  1. Нет недостатков в присвоении каждому элементу идентификатора, кроме возможности коллизий значений (и того, чем поделился Pointy )
  2. Неважно, сколько вы используете
  3. Нет ограничений на количество элементов с идентификаторами на странице (как указано выше)
  4. Поскольку идентификаторы уникальны, это будет быстрее - но вы потеряете преимущество над классами, поскольку сможете использовать несколько значений или применять одно и то же значение к нескольким элементам. Например, если вы хотите использовать javascript для выбора нескольких элементов по имени класса вместо перечисления нескольких идентификаторов. В частности, для CSS увеличение скорости, как правило, будет незаметно.

Элементы с идентификаторами также имеют некоторые другие преимущества, не связанные с javascript, такие как прямая гиперссылка на элемент. В общем, я предпочитаю избегать засорения разметки идентификаторами, если я не считаю, что это действительно необходимо, например: с динамическим контентом из базы данных, который должен взаимодействовать с javascript.

Чтобы решить ваши проблемы с производительностью, редко, когда неэффективный селектор доставляет вам значительные проблемы. Хотя оптимизация полезна, я бы не стал упускать из виду каждый элемент, который вы могли бы выбрать по этой причине. Большинство проблем с производительностью связано с другими вещами, такими как медленные запросы к базе данных при выполнении запросов AJAX, или одновременный запуск большого количества анимаций, или просто неэффективный JavaScript в целом.

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