Вы должны добавить привязку в обработчике success
, если хотите выполнить ее после вызова Ajax:
success: function(data) {
elem.replaceWith(data);
$('.active').bind('click', /* some function needs to go here*/);
}
Тем не менее, в данном случае live()
или delegate()
, вероятно, являются лучшими вариантами [ update: теперь, когда jQuery 1.7 вышел, все можно сделать с помощью .on()
] . Это также предотвратит двойное назначение обработчиков кликов, если у вас есть другие .active
ссылки, которые не были заменены.
Обновление: Относительно вашего обновленного кода: способ, которым вы используете live
, противоречит его цели. Пожалуйста, прочитайте документацию . Что вы делаете, так это назначаете обработчик кликов при нажатии на ссылку, а это значит, что вы снова и снова добавляете обработчики кликов.
Это улучшенная версия вашего кода.
$('.active').live('click', function(event) {
var elem = $(this);
var url = $(this).attr('href');
$.ajax({
url: url,
dataType: 'html',
success: function(data) {
elem.replaceWith(data);
}
});
event.preventDefault();
event.stopPropagation();
});