Javascript Jquery:在另一个函数完成时执行该函数
我需要你的帮助。 我想用jquery制作一个面板的动画。它必须在点击按钮(函数open_面板)上打开并加载不同的php页面,然后在点击带有类“close”(函数close_面板)的div时关闭。 这很好,问题是当一个面板已经打开时,我想打开另一个面板。它应该关闭打开的一个,然后打开最后一个我选择的,但它看起来好像同时执行两个函数。我怎样才能解决这个问题 这是javascript代码:Javascript Jquery:在另一个函数完成时执行该函数,javascript,jquery,animation,queue,jquery-animate,Javascript,Jquery,Animation,Queue,Jquery Animate,我需要你的帮助。 我想用jquery制作一个面板的动画。它必须在点击按钮(函数open_面板)上打开并加载不同的php页面,然后在点击带有类“close”(函数close_面板)的div时关闭。 这很好,问题是当一个面板已经打开时,我想打开另一个面板。它应该关闭打开的一个,然后打开最后一个我选择的,但它看起来好像同时执行两个函数。我怎样才能解决这个问题 这是javascript代码: var panel_is_open=0; var last_open_panel=""; function a
var panel_is_open=0;
var last_open_panel="";
function animation_open_panel(id){
window_height=$(window).height()*0.85;
$("#"+id+"_button").css({'background-color':'rgba(255,255,255,0.8)', 'box-shadow':'0px 5px 10px #39C', '-webkit-box-shadow':'0px 5px 10px #39C'});
$("#main_panel").show().animate({ height: window_height+"px" }, 1500)
.animate({ width: "90%" },1000);
$("#main_panel").queue(function(){
$(".close").show();
$("#page_container").hide().load(id+"/"+id+".php",function(){
$("#page_container").fadeIn(1000);
});
$(this).dequeue();
});
}
function animation_close_panel(){
$("#page_container").fadeOut(1000, function(){
$("#main_panel").animate({ width: "637px" }, 1000)
.animate({ height:"0px" }, 1500, function(){
$(".close").hide();
$("#"+last_open_panel+"_button").css({'background-color':'', 'box-shadow':'', '-webkit-box-shadow':''});
});
});
}
function close_panel(){
if(panel_is_open==1){
animation_close_panel();
panel_is_open=0;
}
}
function open_panel(id){
if(panel_is_open==0){
animation_open_panel(id);
last_open_panel=id;
}
else if(panel_is_open==1){
if(id!=last_open_panel){
close_panel();
open_panel(id);
}
}
panel_is_open=1;
}
事先非常感谢您的帮助
非常感谢您的建议,但我无法用这两种解决方案解决问题。我弄错了什么,但我不明白是什么 这是我的代码:
function close_panel(){
if(panel_is_open==1){
// animations here
panel_is_open=0;
}
}
function close_open_panel(next){
close_panel();
next();
}
function open_panel(id){
if(panel_is_open==0){
// animations here
last_open_panel=id;
panel_is_open=1;
}
else if(panel_is_open==1){
if(id!=last_open_panel){
close_open_panel(function(){
open_pannel(id);
});
}
}
}
知道我错在哪里吗?
谢谢。您可以在函数中使用回调,例如
function open(callback)
{
// do stuff
callback(some_value);
}
然后,您可以通过执行以下操作来使用它:
open(function(value)
{
// anything here will be executed
// after the function has finished
});
callback()
和函数(value)
中的值是可选的,您可以返回一个简单的函数,而不是传递一个要回调的值,但是,它对于某些需要异步回调的函数很有用
有关回调函数的详细信息: