Это потому, что когда вы связываете событие, оно связывает его только с теми элементами, которые находятся в DOM в это время. Поэтому, если вы добавите новые позже, они не будут привязаны к событию, которое вы ранее прикрепили. Предполагая, что у вас есть jQuery 1.3, у него есть встроенная функция, чтобы обойти это, называемая live
. С его помощью вы можете привязать событие ко всем текущим и будущим элементам. Он не поддерживает все события, но click
поддерживает.
Итак, помня об этом, вы просто должны заменить это:
$('.link').bind('click', function(e) {
С этим:
$('a.link').live('click', function(e) {
(я добавил а. В селектор, потому что гораздо эффективнее указать тег, если это вообще возможно)
Если у вас нет jQuery 1.3, обновите его как можно скорее. Если вы не можете, попробуйте плагин livequery , который делает то же самое, но гораздо менее элегантно. В качестве альтернативы, вы можете просто иметь функцию, которая связывает действие и вызывает его каждый раз, когда вы загружаете новые данные. Однако, учитывая все обстоятельства, jQuery live
- лучший способ сделать это.