"Loading .." animasyonu sadece ajax çağrısının bir saniyeden fazla sürmesi durumunda gösterilebilir mi? Ajax çağrılarımın bazıları oldukça hızlıdır, ancak yükleme simgesinin kaybolmadan önce bir saniyeliğine kesildiğini görüyorum. Sadece ben olabilirim ama dikkatimi dağıtır. Tamamen kaldırmak istemiyorum. Baska öneri?jQuery - yalnızca ajax araması bir saniyeden daha uzun sürüyorsa yükleme görüntüsünü gösterilsin mi?
var $loader = $('#loading'), timer;
$loader.hide()
.ajaxStart(function()
{
timer && clearTimeout(timer);
timer = setTimeout(function()
{
$loader.show();
},
1000);
})
.ajaxStop(function()
{
clearTimeout(timer);
$loader.hide();
});
Çok teşekkür ederim! Bir çekicilik gibi çalıştı. – tempid
@Joseph Aynı çözümü bu çözümü gönderdiğiniz için teşekkürler. Sözdizimini açıklığa kavuşturabilir miyim - var $ loader = $ ("# loading"), timer; zamanlayıcı ve seçici id = jquery içeren jquery nesnesi oluşturuyor. zamanlayıcı && clearTimeout (zamanlayıcı); Bu neden böyle yazılır ve sadece clearTimeout (zamanlayıcı) değil? Benzer çalışmayı denedim, ancak gösteriyi sadece x millisec'ten sonra göstermenin tersine ertelemeyi başardı. Yine de, küresel olayları kapsülleyen şeyin neyi başardığına nasıl ulaştığı oldukça net değil. Genişleyebilir misin? – codepuppy
@ codepuppy - 'clearTimeout' parametresi olarak bir zamanlayıcı kimliği bekler. 'AjaxStart' ilk kez çalıştırıldığında, 'timer' tanımsız olacaktır. Undefined 'clearTimeout''a geçilirken herhangi bir hata ortaya çıkmıyor gibi görünmekteyim, yeterince test etmedim, bu yüzden' timer 'aslında bir kimlik varsa ilk önce kontrol etmeyi tercih ettim. Nore ki zamanlayıcı && clearTimeout (zamanlayıcı); 'eşdeğer ise (zamanlayıcı) {clearTimeout (zamanlayıcı); } '. –