我們用類似這樣的顯示AJAX加載符號
var $loading = $('#loadingDiv').hide();
$(document)
.ajaxStart(function() {
$loading.show();
})
.ajaxStop(function() {
$loading.hide();
});
代碼在我們的頁面,我們有很多的AJAX調用和裝載符號的方式往往彈出。有沒有辦法讓它只顯示如果ajax調用超過3秒?
我們用類似這樣的顯示AJAX加載符號
var $loading = $('#loadingDiv').hide();
$(document)
.ajaxStart(function() {
$loading.show();
})
.ajaxStop(function() {
$loading.hide();
});
代碼在我們的頁面,我們有很多的AJAX調用和裝載符號的方式往往彈出。有沒有辦法讓它只顯示如果ajax調用超過3秒?
頂我的腦袋不jquery有.delay()
?
var $loading = $('#loadingDiv').hide();
$(document)
.ajaxStart(function() {
$loading.delay(3000).show();
})
.ajaxStop(function() {
$loading.hide();
});
你可以添加一個計時器,當阿賈克斯還沒有發射的情況下完成清零定時器。
var $loading = $('#loadingDiv').hide();
var timeOutHandler;
$(document)
.ajaxStart(function() {
timeOutHandler = setTimeout(function(){$loading.show();}, 3000);
})
.ajaxStop(function() {
clearTimeout(timeOutHander);
$loading.hide();
});
嘗試使用超時,這樣
var $loading = $('#loadingDiv').hide();
var loadingTimer;
$(document)
.ajaxStart(function() {
// clear existing if any
clearTimeout(loadingTimer);
loadingTimer = setTimeout(showLoading, 3000)
})
.ajaxStop(function() {
// clear timeouts that haven't yet happened
clearTimeout(loadingTimer);
$loading.hide();
});
function showLoading(){
$loading.show();
}
快速,乾淨
有一個可愛的小插件這裏
https://github.com/bstaley/aspectorientedajax/blob/master/aOAjax.js
你可以通過它預先和後期功能。它將鉤入ajax請求並跟蹤未完成的請求。例如,如果您有5個互相重疊的Ajax調用,它可以在第一個顯示,並在最後一個之後隱藏。這是香草JavaScript,只需要調用一次,它就像new AjaxAspect(showFunc,hideFunc);
這裏是一個小提琴,應該告訴你如何實現這一點。 http://jsfiddle.net/bstaley/9VaeC/
我不認爲延遲會在這裏工作,因爲它不能被取消。因此,如果ajax在2秒內完成,加載動畫將在加載後1秒出現,並且永遠不會隱藏。 – Smeegs