我有这个代码。不透明度0和不透明度1有效!但负载(pagina)不加载。为什么呢?
function cargarContenido(pagina) {
$('#content').animate({"opacity":"0"});
if ($('#content').css('opacity') == 0) {
$("#content").load(pagina);
}
$('#content').animate({ "opacity": "1" });
}
如果我只放这个,那就可以了。
function cargarContenido(pagina) {
$("#content").load(pagina);
}
答案 0 :(得分:5)
您需要使用animate
和load
方法的回调参数来按顺序执行代码。试试这个:
function cargarContenido(pagina) {
$('#content').animate(
{ "opacity": "0" },
function() {
$("#loadimage").show(); // show a loading image
// load content when opacity = 0 animation finished
$("#content").load(
pagina,
function() {
$("#loadimage").hide(); // hide a loading image
// make opacity = 1 when content has been loaded
$('#content').animate({ "opacity": "1" });
}
)
}
);
}
注意我已经扩展了此代码的格式,以明确发生了什么。如果需要,您可以删除大量间距以缩短间距。
答案 1 :(得分:2)
animate()
是异步的,所以当你检查不透明度时它不是零,因为动画功能还没有完成。在不透明度完成动画处理后,您可以在动画中使用回调来执行相同的操作:
function cargarContenido(pagina) {
$('#content').animate({"opacity":"0"}, function() {
$(this).load(pagina, function() {
$(this).animate({ "opacity": "1" });
});
});
}
答案 2 :(得分:0)
我认为你应该在回调函数中完成动画后完成这些工作,因为它会在完成动画后运行。关于complete
函数的Read the documentation,
$('#content').animate({"opacity":"0"},500,function(){
$("#content").load(pagina,function(){
$('#content').animate({ "opacity": "1" });
});
});
答案 3 :(得分:0)
我想你想要做的是在#content的不透明度为0之后加载“pagina”?您应该使用complete参数而不是询问不透明度是否为0:
功能cargarContenido(pagina){
$('#content').animate({"opacity":"0"}, 1000, function(){
$("#content").load(pagina, function(){
$('#content').animate({ "opacity": "1" });
});
});
}
答案 4 :(得分:-1)
尝试使用animate的其他参数:
$('#content').animate({"opacity":"0"}, slow, function() {
$("#content").load(pagina);
$('#content').animate({ "opacity": "1" });
});