jQuery导航:一次只调用一个函数?

时间:2012-10-23 12:39:43

标签: jquery

我有3个按钮,每个按钮调用一个功能,将不同的内容设置为视图。如果用户很快就可以点击2个按钮,这会使动画暂时混乱。我怎样才能一次只调用一个函数?

显示设置为无内联块以使内容可见,这意味着当2个动画正在播放时它们彼此相邻。

这是我的其中一个函数的代码,第二个是相同的,除了元素ID与我需要移动的内容相对应。每个按钮都会调用其中一个功能。

function mepage(){
var ele = document.getElementById("btn2");
var ele = document.getElementById("btn3");
var mecont = document.getElementById("mecontent");
if ($(ele).is(':visible')) 
{
    $("#btn2,#btn3").slideUp(1000, function() {
        $("#mecontent").fadeIn(800).css("display","inline-block");
    });
}
else {
    $("#mecontent").fadeOut(800, function() {
        $("#mecontent").css("display","none");
        if(ele.style.display == "none"){
            $("#btn2,#btn3").slideDown(1000);
        }});
    }
}

3 个答案:

答案 0 :(得分:1)

禁用第二个按钮 使用回调函数或.promise(),在按钮1的动画结束时启用它。

答案 1 :(得分:1)

尝试修改为:

var animation_enabled = true;
function mepage(){
if(!animation_enabled )return;
animation_enabled = false;
var ele = document.getElementById("btn2");
var ele = document.getElementById("btn3");
var mecont = document.getElementById("mecontent");
if ($(ele).is(':visible')) 
{
    $("#btn2,#btn3").slideUp(1000, function() {
        $("#mecontent").fadeIn(800, function() {animation_enabled =true;}).css("display","inline-block");
    });
}
else {
    $("#mecontent").fadeOut(800, function() {
        $("#mecontent").css("display","none");
        if(ele.style.display == "none"){
            $("#btn2,#btn3").slideDown(1000, function() {animation_enabled =true;});
        }});
    }
}

如果当前没有动画正在运行,则只允许单击第二个按钮。

答案 2 :(得分:1)

您可以在开始动画之前禁用按钮。