【发布时间】:2016-06-20 14:50:55
【问题描述】:
我在鼠标进入和鼠标离开事件上遇到问题,它第一次触发很好,但如果我在动画完成之前再次触发事件,例如在 1 秒间隔内,动画会执行两次。 javascript 的异步特性导致事件循环将每个事件存储在队列中,直到完成所有触发的事件。我怎样才能防止这种情况?如果需要,我可以提供更多信息,但我似乎根本无法解决这个问题......我可能需要重新考虑我的设计方法,欢迎所有建议,但我真的很想让这个工作...... .
我试过了,它仍然在排队:
$('div#nav-sidebar').off('mouseleave').on('mouseleave', mouseLeaveEvent);
$('div#nav-sidebar').off('mouseenter').on('mouseenter', mouseEnterEvent);
HTML
当前代码如下......
var mouseLeaveEvent = function() {
console.log('sidebar mouse leave!')
$('li#GlasswareCandles').children('ul.menu-items').slideUp(750);
$('li#CandleTins').children('ul.menu-items').slideUp(750);
$('li#ScentedOils').children('ul.menu-items').slideUp(750);
$('li#Air-Fresheners').children('ul.menu-items').slideUp(750);
$('li#OtherProducts').children('ul.menu-items').slideUp(750);
$(this).children('ul.blog_list.toggle_list').slideUp(1500);
return false;
};
var mouseEnterEvent = function() {
console.log('sidebar mouse enter!')
$(this).children('ul.blog_list.toggle_list').slideDown(500);
return false;
};
$('div#nav-sidebar').off('mouseleave').on('mouseleave', mouseLeaveEvent);
$('div#nav-sidebar').off('mouseenter').on('mouseenter', mouseEnterEvent);
【问题讨论】:
-
您可以在动画结束后取消绑定鼠标事件,然后在加载或渲染新动画后再次绑定。
-
@Hassan 你能举个例子吗?
-
我会试一试,看看效果如何......
-
@Hassan 我无法让它工作并尝试了多种不同的方法,可能是缺乏经验......我想我会继续破解它......
标签: javascript jquery jquery-animate