Javascript 如何";动画化;使用jquery';s.load()

Javascript 如何";动画化;使用jquery';s.load(),javascript,jquery,ajax,Javascript,Jquery,Ajax,我有一个ajax站点,页面通过load()加载,但是我如何添加转换?一个简单的淡出+淡出已经很好了 这是我用来加载它的代码(加上一个加载指示器) 我希望当前页面(只是容器)淡出,新页面随fadeIn一起到达 $(document).ready(function() { $('a').click(function(event) { $("#container").append('<div id="loading">Loading...</div>')

我有一个ajax站点,页面通过
load()
加载,但是我如何添加转换?一个简单的淡出+淡出已经很好了

这是我用来加载它的代码(加上一个加载指示器)

我希望当前页面(只是容器)淡出,新页面随fadeIn一起到达

$(document).ready(function() {
    $('a').click(function(event) {
        $("#container").append('<div id="loading">Loading...</div>');
        event.preventDefault();
        var url = $(this).attr('href');
        $('div#container').load(url, function() { $("#loading").fadeOut() });
    });
});
$(文档).ready(函数(){
$('a')。单击(函数(事件){
$(“#容器”).append('Loading…);
event.preventDefault();
var url=$(this.attr('href');
$('div#container').load(url,function(){$('div#load').fadeOut()});
});
});

确保您有一个html标记,内容如下:

<div id="container">
    <div id="content"></div>
</div>
然后,通过一些简单的jQuery,您将能够解决这个问题:

$(function() {
    $('a').click(function(e) {

        e.preventDefault();

        var url = $(this).attr('href');
        var content = $('#content');

        content.fadeOut(400, function() {

            $("#container").append('<div id="loading">Loading...</div>');

            var loading = $('#loading');

            loading.fadeIn(400, function() {
                content.load(url, function() { 
                    loading.fadeOut(400, function() {
                        $(this).remove();
                        content.fadeIn(400);
                    });
                });
            });   
        });
    });
});
$(函数(){
$('a')。单击(函数(e){
e、 预防默认值();
var url=$(this.attr('href');
var content=$(“#content”);
内容淡出(400,函数(){
$(“#容器”).append('Loading…);
变量加载=$(“#加载”);
加载.fadeIn(400,函数(){
load(url,函数(){
加载.衰减(400,函数(){
$(this.remove();
内容:fadeIn(400);
});
});
});   
});
});
});
有道理吗


编辑:稍加修改。

您需要比
.load()
更细粒度的内容,以便在插入新内容之前执行
淡出()

$(function()
{
    var $container = $('#container');

    $('a').click(function()
    {
        $container.html('<div id="loading">Loading...</div>');

        var url = $(this).attr('href');

        $.get(url, function (data)
        {
            $("#loading").fadeOut(function()
            {
                // without this the DOM will contain multiple elements
                // with the same ID, which is bad.
                $(this).remove();

                $container.hide().html(data).fadeIn();
            });
        });

        return false;
    });
});
$(函数()
{
var$container=$(“#container”);
$('a')。单击(函数()
{
$container.html('Loading…');
var url=$(this.attr('href');
$.get(url、函数(数据)
{
$(“#加载”).fadeOut(函数()
{
//如果没有这个,DOM将包含多个元素
//使用相同的ID,这很糟糕。
$(this.remove();
$container.hide().html(data.fadeIn();
});
});
返回false;
});
});

(非常基本)演示:

如果您试图淡入淡出内容,可以设置不透明度属性的动画,而不是完全淡出元素,以保持容器高度

$(document).ready(function() {
    $('a').click(function(event) {
        $("#container").animate({'opacity': 0}, 200);
        event.preventDefault();
        var url = $(this).attr('href');
        $('div#container').load(url, function() {
            $(this).animate({'opacity': 1}, 200);
        });
    });
});
$(document).ready(function() {
    $('a').click(function(event) {
        $("#container").animate({'opacity': 0}, 200);
        event.preventDefault();
        var url = $(this).attr('href');
        $('div#container').load(url, function() {
            $(this).animate({'opacity': 1}, 200);
        });
    });
});