Ответ 1
Вам нужно будет добавить переупорядочение в обработчике 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();
});