我想做的事情通过jQuery load()和一次返回,然后淡出旧的内容和淡入新的内容AJAX调用。我想旧的内容留出,直到新的内容被检索,在该点处淡出/在被触发。

使用:

$('#data').fadeOut('slow').load('/url/').fadeIn('slow');

内容淡入和淡出和片刻后负载()调用返回,和所述数据的更新,但褪色已经完成。

有帮助吗?

解决方案

使用回调来控制呼叫的顺序。

var $data = $('#data');
$data.fadeOut('slow', function() { 
    $data.load('/url/', function() { 
        $data.fadeIn('slow'); 
    }); 
});

(注意:我不是100%肯定,如果使用var $data = ...$data.doStuff()将实际工作 - 如果这样做,这样可以节省您不必每次查找DOM树的股利,但如果没有,只是删除了第一行,并使用$('#data')无处不在...

其他提示

在问题涉及以下事实:所有三种功能,淡出,负载和淡入是异步的。每个上述功能的接受一个回调参数(的函数)时,功能执行结束,这将运行。 E.g。

$('#data').fadeOut(functionToRunWhenFadeOutIsComplete);

//如果已经定义了“functionToRunWhenFadeOutIsComplete”它将运行之后淡出结束。

有了这些知识,您现在就可以解决您的问题。

var fadeInData = function fadeInData() { $('#data').fadeIn(); }
var loadData = function loadData() { $('#data').load('url', fadeInData); }
$('#data').fadeOut(loadData);

可替换地,可以定义loadData,fadeInData为内嵌匿名函数。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top