最初にAJAXを使用してページをロードしていない場合は、単純です<a href="other-page">link</a>
(そして、あなたの質問から、そうであると思います-私が間違っている場合は、sharethisの回答を参照してください。実際には、AJAX を使用して他のページをロードします)、ハンドラーを AJAX イベントにバインドしても、AJAX イベントがないため、必要なことは実行されません。
次のように書くことをお勧めします。
function loading () {
$('body').addClass('loading');
setTimeout(function () {
$('body').removeClass('loading');
}, 20000);
}
読み込みが遅いリンクのクリック ハンドラーにその関数をバインドしますが、既定のリンクの動作 (つまり、実際にリンクをたどる) を妨げることはありませんclass="slow"
。
$('a.slow').click(loading);
またはすべてのリンクに対して:
$('a').click(loading);
これsetTimeout
は、サーバーが何らかの理由で応答しない場合に備えて、ユーザーがページを永久に使用できなくすることはありません。
ローディングスピナーが表示されている間はページを使用不可にしないことをお勧めします。これにより、サーバーが応答するのを待っている間、または待機する代わりに、ユーザーは他のことを自由に行うことができますが、それはあなた次第です. THIS DEMO (CSS のいくつかの変更を加えたフィドル) を参照して、私が何を意味するかを確認してください。