jQuery,动画和动画返回.回调函数错误?:S
jQuery, animate and animate back. Call back function error? :S
我不知道自己做了什么。其想法是设置一个元素的动画,使其从某个位置滑入,并在单击另一个元素时滑回。我已经在原始事件函数的回调中应用了第二个事件。
但是,尽管有这种结构,第二个事件函数将运行,尽管我还没有单击回调函数中的第二个元素。
如果你没有遵循,基本的想法是这样的。
点击->滑入->外侧点击->滑出
$('#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()
运行滑入和滑出吗?
这里不需要回调,只需单独挂起click
处理程序即可:
$('#mobileList').click(function(){
$('#mobileMenu').show().stop(true).animate({
'left': '30%'
}, 500);
});
$('#body').click(function(){
$('#mobileMenu').stop(true).animate({
'left': '100%'
}, 500, function() {
$(this).hide();
});
});
小提琴示例
请注意,我使用了show
/hide
而不是css
,并添加了对stop()
的调用,以防止在动画期间连续单击时队列被填满。
更新
要在单击其他任何位置时隐藏菜单,需要将事件处理程序附加到document
并检查e.target
以查看是什么元素导致了该事件。如果它在菜单之外,就把它隐藏起来。
$('#mobileList').click(function (e) {
e.stopPropagation();
$('#mobileMenu').show().stop(true).animate({ 'left': '30%' }, 500);
});
$(document).click(function (e) {
var $menu = $('#mobileMenu');
if (!$menu.is(e.target) && !$menu.has(e.target).length) {
$('#mobileMenu').stop(true).animate({ 'left': '100%' }, 500, function () {
$(this).hide();
});
}
});
更新的fiddle
相关文章:
- 照片滑动:关闭图库会为错误的矩形(缩略图)添加动画效果
- 找不到在 create-js 中运行的动画,未列出任何错误
- 使用动画时出现反应JS错误
- Jquery动画错误“;ReferenceError:$未定义“;
- 3ds max>collada>threejs动画错误;缩放超出界限”;
- jQuery动画没有在对象上运行(或引发错误)
- jQuery动画函数回调错误
- 边动画:动画缩放错误
- Javascript图像动画闪烁图像错误
- JavaScript/jQuery动画错误:未捕获的语法错误:意外的令牌}
- jQuery SVG插件转换动画错误
- Safari 中的 SVG SMIL 动画错误
- CSS3 动画错误/眨眼
- 你能解决我的JQuery文本动画错误吗,导致错误的文本改变外观
- WebKit jQuery动画错误
- jQuery slideDown ($.slideDown)动画错误:Uncaught TypeError: Canno
- Jquery动画错误
- jQuery隐藏并显示动画错误
- Chrome中的动画错误
- firefox中的Jquery动画错误