0

我想在一个 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));
            }); 
}
4

2 回答 2

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)
                  });
  }); 
}
于 2010-08-19T15:32:14.157 回答
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>
于 2010-08-19T16:50:28.560 回答