Слушатели: можно ли запускать на каждой странице или инициализировать только на тех страницах, которые в них нуждаются? - PullRequest
2 голосов
/ 16 июля 2011

На моем сайте есть элементы с «прослушивателями событий» (.live, .bind или .delegate), и я могу разделить их на группы по частоте их появления:

  1. Элементы на каждой странице.
  2. Элементы на некоторых страницах.

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

Я пытаюсь выяснить, что будет мудрее для элемента, который (а) появляется только на нескольких страницах и (б) требует прослушивателя:

  • Реализация слушателя по всему сайту
  • Реализуйте слушатель так, чтобы он сначала был инициализирован на любой странице, которая хочет его использовать

Например, скажем, у меня есть <input class='autocomplete' />, который появляется на нескольких страницах, но не на всем сайте. Когда кто-то вводит текст, он попадает в базу данных и пытается завершить свой запрос для него.

Поскольку этот элемент появляется не на каждой странице, достаточно ли служебных данных jQuery.live('someEventsHere',MyHandler()) достаточно, чтобы я мог вызывать его только на тех страницах, где он используется? (Например, создавая функцию initializeMyHandler() и вызывая ее на этих страницах?) Или, на страницах, где этот слушатель не будет использоваться, это достаточно дешево, чтобы в любом случае установить и не беспокоиться?

Ответы [ 2 ]

1 голос
/ 16 июля 2011

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

0 голосов
/ 16 июля 2011

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

Однако я бы сказал, разделите ваш код на файлы и включите только те файлы, которые вам нужны на каждой странице.

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