Jump to content

Идентификация нод.


s0rr0w
 Share

Recommended Posts

В каждом большом проекте наступает момент, когда внимательность и усердность снижаются до минимального уровня. Самое время для создания пары трудноотловимых багов. И один из самых распространенных - дубликаты идентификаторов.

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

Кто-то воскликнет, но это же проще пареной репы, поставить плагин валидации к FF и валидировать на лету! Это подходит для классического метода построения страницы - все на одной странице, переходы сделаны между страницами. А для AJAX-генерируемых страниц это нереальная задача.

Как выйти из ситуации? Два пути. Оба не сильно "веселые", но сполне реализуемые. Написать специальный JS-модуль для проверки на совпадения ID, который рапортовал бы о повторах, или же максимально возможно отказываться от идентификаторов, перекладывая эти функции на CSS className.

Второй способ имеет ряд позитивных моментов. Это возможность выборки нескольких нод по одному признаку. Правда нужно будет немного поменять стиль мышления.

Есть еще один способ, но про него я расскажу позже. ;)

Теперь возьмем простой пример. Нужно активировать некий таб. Что пишут обычно? Берут ID контейнера, по идентификатору получают ноду контейнера и перебирают все ноды, присваивая им определенные классы. Зачем перебирать, спросите вы, если проще запомнить, какой таб активный, его выключить, а нужный - включить? Этот способ хорош ровно до тех пор, пока не случится ситуация, когда случайно не "потеряется" переменная со ссылкой на активную ноду. Более универсальный и стрессоустойчивый способ перебора нод для активации.

Написав простую функцию getParentWithClassName, которая будет искать совпадение имени класса среди родительских нод, можно будет достаточно быстро найти искомый контейнер. Такой код не требует постоянного создания идентификаторов нод, что существенно уменьшает количество ошибок, которые связаны с дубликатами идентификаторов, дополнительного кода по созданию этих самых уникальных идентификаторов на серверной стороне или на уровне JS

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy