2009-11-05 2 views
1

Я хочу показать div с анимацией загрузки по моей странице, пока страница загружает некоторый XML-контент. После его загрузки я хочу скрыть этот div. Как я могу это сделать?Отображение div во время загрузки страницы, скрытие при ее завершении

+2

Как содержание XML загружается? Это через AJAX? – rahul

ответ

8
$.ajax({ 
    url: '/test.xml', 
    beforeSend: function(XMLHttpRequest) { 
     // Show the div before sending the request 
     $('#load').show(); 
    }, 
    complete: function(XMLHttpRequest, textStatus) { 
     // Hide the div no matter if the call succeeded or not 
     $('#load').hide(); 
    }, 
    success: function(xml) { 
     // if the request succeeds do something with the received XML   
    } 
}); 
+0

Почему это «лучшее» решение здесь? Мой почти идентичен и имеет «0». Не то, чтобы меня это волнует, но заставляет меня задаться вопросом о «системе подсчета очков» здесь? – 2011-02-04 00:40:42

3
$.ajax({ 
    type: "GET", 
    url: "your.xml", 
    dataType: "xml", 
    beforeSend: function() { 
     $('#div').fadeIn(); 
    }, 
    success: function(xml) { 
     // example for parsing xml 
     $(xml).find('YOUR_XML_TAG').each(function(){ 
      // append xml to page HERE 
     }); 
    }, 
    complete: function() { 
     $('#div').fadeOut(); 
    } 
}); 
2

@cballou Ваш код будет оставить '#div' "вверх", если $ .ajax() не suceeded для любого из многочисленных возможных причин.

+0

отмечено и исправлено. –

0

Я использовал бы событие onbeforeunload, когда изменяется URL-адрес страницы, чтобы создать оверлейный div с непрозрачностью в 0.5, который будет заменен новым контентом при загрузке страницы.

1

Почти правильно;) Никогда недооценивайте важность удаления избыточных вызовов $(). Так что ...

//all of this is inside some closure or function 
var $blanket = $("#div") ; 
// check if after last call, something has possibly removed your '#div' 
// throw if false 
ASSERT($blanket.length === 1) ;  
$.ajax({ 
     type: "GET", 
     url: "your.xml", 
     dataType: "xml", 
     beforeSend: function() { $blanket.fadeIn(); 
     }, 
     success: function(xml) { 
      // example for parsing xml 
      $(xml).find('YOUR_XML_TAG').each(function(){ 
       // append xml to page HERE 
      }); 
     }, 
     complete: function() { $blanket.fadeOut(); 
     } 
    }); 

--DBJ

Смежные вопросы