javascript - 动画运行一次的链接点击次数

标签 javascript jquery html css animation

我之前回答了一个问题,在单击链接时运行 jQuery 动画。然后张贴者提出了一个非常有效的问题,这让我很困惑。

“如何只在第一次点击时运行动画”...

我认为这会很简单,所以我尝试了这样的事情:

clicked = true;

$('#hotel').click(function(){

    if (clicked){
    $('#Hotelbody').animate({width:'toggle'},1000);
    $('#Hotelbody').fadeIn();
    $('#Mealsbody').hide();
        clicked = false;

    }
});

平心而论,它仅在第一次点击时运行动画。但是,如果我单击该菜单项并单击“Meals”,然后返回单击“Hotels”,则动画根本不会运行。我花了整个上午试图解决这个问题,现在我很沮丧 - 哈哈

本质上,需要做的是,当用户在“Hotels”菜单项上时,如果他/她单击“Hotels”菜单项,则不要再次运行动画。但如果用户冒险进入另一个菜单项并返回旅馆,则运行动画。

请参阅FIDDLE举个例子。

要遵循的步骤:

1. Click Hotel --> (Animation runs)
2. Click Hotel again --> (Animation doesn't run)[so far, so good] 
3. Click Meals --> Then Click Hotels again --> (Animation will not run again) 

如果我需要进一步解释,请告诉我?

想法: - 让 jQuery 查看 css 类:active 和动画吗?

最佳答案

没那么难,只要检查被点击的那个当前是否可见

$('#Hotel, #Meals').on('click', function(){
    var el = $('#'+this.id+'body');
    if ( el.is(':visible') ) return false;
    el.animate({width:'toggle'},1000)
    $('#Mealsbody, #Hotelbody').not(el).hide();
});

FIDDLE

关于javascript - 动画运行一次的链接点击次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22324663/

相关文章:

javascript - 从数据源将行添加到数据表

html - 文本区域标签的定位

javascript - Chrome 控制台处理 jQuery $(this) 错误?

javascript - JavaScript 与 Flash 之间的通信

html - MobileAngularUI 部分内部的粘性页脚

javascript - 基本的 getJSON 问题——第二个参数似乎总是被忽略

javascript - 在新浏览器中打开链接?

javascript - Grunt Watch 任务不必要地重复步骤

jquery - 语法错误,无法识别的表达式 : [name=ctl00$MainContent$mainProgress]

jquery - 避免在内容母版页中出现多个 document.ready