我想在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));
});
}
答案 0 :(得分:1)
您需要将.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)
});
});
}
答案 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);
});
});
}
你必须在#showdata周围添加一个容器div。
<div>
<div id="#showdata">TEST</div>
</div>