我有一个子菜单,它从屏幕左侧(左侧:-662px)向左侧滑动:342px。这是在单击主菜单项时触发的。
如果再次单击主菜单,子菜单将退回到 -662px。我的问题是,如果主菜单项快速连续单击,则子菜单元素会一次在页面上移动 342 像素。它没有像预期的那样来回移动。
这只发生在元素动画期间 - 在子菜单完成动画后单击主菜单项,它会按原样移回 -662px。
我试过添加 .stop() 没有影响。有谁知道如何解决这个问题?
//IF IS SHOWN, HIDE
$("#menu ul li").click(function() {
$("#menu ul li ul").each(function() {
//GET SUBMENUS CURRENT POSITION
var sub2pos = $(this).css('left');
//IF MARGIN IS GREATER THE 340PX HIDE THE MENU
sub2pos = parseInt(sub2pos);
if(sub2pos > 340){
$(this).stop().animate({ left: '-=662px' }, 400 );
}
});//END EACHFUNCTION
});//END 1st CLICK FUNCTION
//IF IS HIDDEN, SHOW
$("#menu ul li").click(function() {
//GET SUBMENUS CURRENT POSITION
var sub2pos = $(this).children('ul').css('left');
//IF MARGIN IS LESS THEN 342PX SHOW THE MENU
sub2pos = parseInt(sub2pos);
if(sub2pos < 342){
$(this).children('ul').delay(500).stop().animate({ left: '+=662px' }, 400 );
}
});//END 2nd CLICK FUNCTION
编辑:我在这里创建了一个小提琴。http://jsfiddle.net/q5Htx/19/注意如果你快速点击菜单项会发生什么