Хороший эффект загрузки jquery
Я хотел бы загрузить страницу внутри div с эффектами fadeTo. Я создал эту функцию для этого
function show(div) {
$("#showdata").fadeTo(300,0.0,function() {
$("#showdata")
.html('<img src="images/loading.gif" />')
.load('includes/show/'+div+'.inc.php')
.fadeTo(300,1.0);;
});
}
Затухание из текущего содержимого в изображение в порядке, но после этого новое содержимое внезапно появляется.
Я тоже пробовал это, но те же результаты:
function show(div) {
$("#showdata").fadeTo(300,0.0,function() {
$("#showdata")
.html('<img src="images/loading.gif" />')
.load('includes/show/'+div+'.inc.php',$("#showdata").fadeTo(300,1.0));
});
}
2 ответа
Вы должны обернуть свой код для .load()
обратный вызов как анонимная функция, подобная этой:
function show(div) {
$("#showdata").fadeTo(300,0.0,function() {
$("#showdata").html('<img src="images/loading.gif" />')
.load('includes/show/'+div+'.inc.php', function() {
$(this).fadeTo(300,1.0)
});
});
}
Я попробовал ваш код, и он, кажется, работает так, как вы хотели. Мне пришлось увеличить время затухания с 300 до 2000 мс, чтобы лучше видеть затухание.
Единственная проблема, которая у вас возникнет, это то, что loading.gif не появляется. Это потому, что вы убираете этот элемент, так что вы ничего не увидите там:)
редактировать: вы можете сделать что-то вроде этого вместо этого.
function show(div){
$("#showdata").fadeTo(2000,0.0,function() {
$("#showdata")
.parent().append('<img src="loading.gif" />') //add the image to the container, so you can see it still
.end().load('includes/show/'+div+'.inc.php', function(){
$("#showdata")
.parent().find('img').remove() //remove the image once the page is loaded.
.end().end().fadeTo(2000,1.0);
});
});
}
Вы должны добавить контейнер div вокруг #showdata.
<div>
<div id="#showdata">TEST</div>
</div>