Использование jQuery on () с объектами в памяти - PullRequest
4 голосов
/ 25 ноября 2011

Я нахожусь в процессе написания плагина jQuery для обработки отслеживания Google Analytics с использованием атрибутов данных html5.

Код все еще находится в стадии альфа, но прилагаемая скрипка показывает, что он отслеживает отдельные элементы dom и выводит правильные результаты.(Вы увидите все это в консоли).

Пока что меня беспокоит только использование памяти.В настоящее время я привязываю отдельные обработчики событий к каждому элементу, и, как мы все знаем, это может привести к беспорядку и увеличению объема памяти.

В идеале я хотел бы хранить каждый объект трекера в центральном месте и выполнять какой-то видвнутри функции jQuery on() для запуска pushToGoogle() с правильным контекстом.

К сожалению, мои отбросы JavaScript не могут это сделать, и я не могу найти эффективный способ обернуть все визящная родовая мода.

Есть идеи ??

Ответы [ 2 ]

0 голосов
/ 27 ноября 2011

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

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

0 голосов
/ 25 ноября 2011

Вы можете использовать всплывающее событие.

$(document).on('click', 'a.trackEvent', function () { /* do complicated things */ });

Таким образом, в принципе любой элемент a.trackEvent в документе (т.е. все ваши ссылки с классом trackEvent) будут выполнять функцию при нажатии.

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

Раньше это была живая функция: http://api.jquery.com/live/

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