Хранение элемента против его идентификатора, что является наиболее эффективным - PullRequest
1 голос
/ 07 мая 2011

На странице у меня есть несколько элементов, над которыми мне нужно выполнять повторяющиеся операции.Чтобы избежать обхода DOM каждый раз, я хочу сохранить ссылку на все эти элементы в массиве (или объекте).

Каждый из этих элементов имеет идентификатор.

Что такоенаиболее эффективно: хранить идентификаторы в моем массиве или сами элементы?

Если я сохраню идентификаторы, то каждый раз, когда я хочу получить доступ к элементам, мне нужно вызывать getElementById.Если я храню сами элементы, то мне кажется, что это требует больше «усилий» от браузера (хотя я понятия не имею, как это работает на практике, и было бы интересно узнать больше).

Ответы [ 2 ]

3 голосов
/ 07 мая 2011

Гораздо эффективнее хранить ссылку на элемент, а не только id, потому что, как вы сказали, вы избегаете поиска при выполнении операций с ним.

Недостаток храненияссылка на элемент состоит в том, что у вас есть ссылка на элемент (в этом вся суть), и поэтому, если вы удалите элемент из DOM, вы должны обязательно освободить свою ссылку на него, иначеостаться в памяти.Если эти элементы всегда существуют на вашей странице и никогда не удаляются, это нормально, хотя я бы порекомендовал обработчик unload, который освобождает все ваши ссылки на элементы, просто чтобы убедиться, что старые версии IE не делают глупостей, таких как keepих даже после того, как пользователь покинул страницу.

1 голос
/ 07 мая 2011

Вы не храните элемент в массиве, но ссылаетесь на элемент в DOM.Я бы пошел с сохранением ссылки на элемент над сохранением его идентификатора.

...