Пример кода, который я первоначально разместил выше, возможно, помог мне ответить на мой собственный вопрос ...
На моем живом сайте .load () был вложен в 2 уровня обратных вызовов: -
$.historyInit(function(hash) {
$('html, body').animate({scrollTop: '0'}, 500, 'swing', function() { \\ level 1
$('#loading').remove(); $('#container').append('<span id="loading">Loading...</span>');
$('#ajax').animate({height: 'hide'}, 'fast', 'swing', function() { \\ level 2
$('#page').empty(); $('#loading').fadeIn('fast');
if (hash == '') { /* Index */
$('#ajax').load('/ #ajax','', function() { ajaxLoad(); });
} else {
$('#ajax').load(hash + ' #ajax', '', function(responseText, textStatus, XMLHttpRequest) {
switch (XMLHttpRequest.status) {
case 200: ajaxLoad(); break;
case 404: $('#ajax').load('/404 #ajax','', ajaxLoad); break; // Default 404
default: alert('We\'re experiencing technical difficulties. Try refreshing.'); break;
}
});
}
}); // $('#ajax')
}); // $('html, body')
}); // historyInit()
... перемещение оператора if (hash)
за пределы обратных вызовов возвращает меня к 1 XHR GET для всех страниц (с /
в качестве единственного исключения).
Еще раз спасибо за попытку помочь Пауло.