Ранее думал, что все изменения на странице выполняются через манипуляции с DOM. Понадобилось сделать AJAX-навигацию, с установкой обработчиков на ссылки стало понятно, что все сложнее. Сначала для обработки ссылок с class=«ajax» засунул в $(document).ready():
$(".ajax").click(function(event){
event.preventDefault();
ajax_navigate(this.href);
return false;
});
Навигация заработала, но затем я увидел, что по недосмотру в ответ на AJAX-запросы сервер выдает страницу целиком, а не блок контента. После исправления этой ошибки ссылки в загруженном через AJAX блоке перестали AJAX'ифицироваться. Тогда я добавил такой же код в function(data){...} AJAX-запроса, чтобы по его завершении обрабатывались новые ссылки в загруженном блоке.
После этого произошло вот что:
- ссылки в загруженном блоке AJAX'ифицироваться все равно не стали
- ссылки на базовой странице стали после каждого нажатия «удваивать» количество вызовов, вызывая в последующем многократную подгрузку, а после какой-то последовательности (закономерность пока не понял) вызывать зацикленную подгрузку поочередно нескольких разных страниц.
Что на самом деле происходит при назначении функции через $(...).click()? Как-то можно (Firebug'ом, ...) посмотреть, что в действительности навешено на ссылку в данный момент?