【发布时间】:2015-02-12 13:11:11
【问题描述】:
我不知道我做了什么。这个想法是动画一个元素从一个位置滑入并在另一个元素被单击时滑回。我在原始事件函数的回调中应用了第二个事件。
但是,尽管有这种结构,但第二个事件函数将运行,尽管我没有单击回调函数中的第二个元素。
如果你不关注,基本思路是这样的。
点击 -> 滑入 -> 外部点击 -> 滑出
$('#mobileList').click(function(){
$('#mobileMenu').css({'display':'block'}).animate({
'left':'30%'
},500,function(){
$('#body').click(function(){
$('#mobileMenu').animate({
'left':'100%'
},500,function(){$('#mobileMenu').css({'display':"none"});/* I tried return false; here, failed to solve problem*/});
});
});
});
启动 CSS
nav#mobileMenu{display:none;width:70%;height:100%;background:#191820;color:#DCDCDC;position:fixed;top:0;left:100%;}
元素的结构。
<div id="body">
<a id="mobileList>☰</a>
<!-- content here -->
</div>
<nav id="mobileMenu">
<!-- content -->
</nav>
在前两次尝试中,它运行良好。下次我来运行时,它会动画,然后立即动画出来。我真的不明白为什么,因为它是一个回调函数? :S
我认为这是因为元素 #mobileList 在元素 #body 内。
回调是否仍在运行?我可以停止它寻找事件吗?
我应该使用queue() 来运行滑入和滑出吗?
【问题讨论】:
-
你在嵌套点击处理程序,坏主意!
-
我是这么认为的 :p 你可以推荐另一种方法吗?
-
Rory 的回答对你不起作用吗?
标签: javascript jquery events animation callback