Является ли плохой идеей поддерживать ссылки на объекты DOM и / или объекты jQuery в массивах javascript? - PullRequest
4 голосов
/ 22 октября 2011

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

В первую очередь я хочу создать массивы и хеш-таблицы, анонимно ссылающиеся на элементы DOM, чтобы я мог быстро найти их и отправить необходимые изменения.Есть ли причина, по которой такой подход был бы проблематичным?Было бы лучше вместо этого искать их в дереве DOM?

А как насчет объектов jQuery?Лучше ли создавать их часто на лету и разрешать собирать мусор или хранить большое количество (сотни) в неком структурированном кэше?

Ответы [ 2 ]

2 голосов
/ 22 октября 2011

Лучше хранить один объект jQuery, чем создавать их несколько раз. Но имейте в виду, что узким местом в Javascript является манипулирование DOM, а не сохранение ссылок на его элементы.

Я только что провел несколько тестов с 10000 делениями и значительно быстрее, когда все помещается в объект массива / jquery, чем каждый раз просматривал его в DOM.

Используйте IDS и индексы для максимальной эффективности (многие люди используют старые браузеры, у которых нет встроенного селектора классов), то есть:

var allElements = $("#container").children()
allElements.eq(10).hide()
1 голос
/ 22 октября 2011

Время будет зависеть от манипулирования содержимым элементов, а не от запроса к ним (особенно если выполняется запрос с помощью селекторов, использующих elementID, так как getElementById очень быстрый). Я думаю, что это больше вопрос структуры кода, а не производительности. Может быть много лишнего кода, чтобы синхронизировать этот хеш-код с DOM, это главная проблема, которую я вижу. (Между прочим, звучит так, как будто вы действительно хотите - способ декларативно выразить, какие элементы в DOM связаны с какими частями данных. Существуют платформы, которые делают это, и они заботятся о том, чтобы обновить и сохранить все в синхронизации.)

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