【发布时间】:2014-03-11 11:40:40
【问题描述】:
我之前回答了一个问题,在单击链接时运行 jQuery 动画。然后发帖人问了一个相当有道理的问题,这让我很难过。
“如何只在第一次点击时运行动画”...
我认为这会很简单,所以我尝试了这样的方法:
clicked = true;
$('#hotel').click(function(){
if (clicked){
$('#Hotelbody').animate({width:'toggle'},1000);
$('#Hotelbody').fadeIn();
$('#Mealsbody').hide();
clicked = false;
}
});
平心而论,它只在第一次点击时运行动画。但是,如果我单击该菜单项并单击“Meals”,然后返回单击“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 和动画?
【问题讨论】:
-
使用one()方法而不是点击。
-
如果我错了,请纠正我,但是 one() 会做同样的事情......它会运行一次动画,然后当你在 Meal 菜单项后返回时,它什么也不做?看到这个小提琴:jsfiddle.net/gMha8/9
-
不清楚你想说什么!
-
你最好先正确处理这个
active类,然后逻辑很容易得到,如果元素已经激活,请检查点击处理程序
标签: javascript jquery html css animation