Как общий ответ на ваш вопрос, вы должны попытаться минимизировать посторонние вызовы функций - возможно, даже больше в динамической ситуации с контентом.
В частности, live()
является хорошим примером для использования в этом вопросе, потому что он влечет за собой некоторые (потенциально) существенные осложнения производительности. Когда вы вызываете live()
, jQuery привязывает выбранное вами событие к объекту document
. Это означает, что каждый раз, когда событие вызывается, оно всплывает от исходного элемента к объекту document
. В зависимости от структуры вашего сайта (и в целом) это может быть дорогостоящим.
Гораздо лучшая альтернатива с delegate()
Лучше использовать функцию jQuery delegate()
, особенно если у вас есть предопределенный родительский контейнерный элемент, внутри которого будут запускаться все ваши события. Когда вы используете delegate()
, вы в основном используете ограниченную версию live()
, так что событие распространяется только на указанный родительский элемент. В результате вы избегаете многих потенциально дорогостоящих пожаров событий на элементах, которые вам не нужны.
В вашем случае, поскольку вы работаете с динамически генерируемым контентом, вы должны либо использовать вышеупомянутые функции, либо настроить свой код таким образом, чтобы при вставке элемента в DOM он также связывал с ним обработчик событий. Первое, вероятно, проще, но второе может предложить незначительную (вероятно, неразличимую) лучшую производительность.