如何告诉Jquery只运行最后一个mouseenter事件
How to tell Jquery to run only the last mouseenter event?
我有一组幻灯片,当鼠标进入幻灯片图像时,我想放大照片。
当我把鼠标放在图像上时,所有的图像都按照我把鼠标移到的顺序放大。如何强制jquery只超过最后一个鼠标输入事件并取消所有历史鼠标输入事件?
这是我的jquery代码。
$(document).ready(function(){
$("#hoverslider ul li").bind("mouseenter",function(){
$(this).animate({
width:"500px"
},"slow");
$(this).addClass("active");
$("#hoverslider ul li:not(.active)").animate({
width:"141px"
});
})
$("#hoverslider ul li").bind("mouseleave",function(){
$(this).animate({
width:"213px"
},"slow");
$(this).removeClass("active");
$("#hoverslider ul li:not(.active)").animate({
width:"213px"
});
});
});
请帮我渡过难关。谢谢
您最初可以停止mouse enter
中的所有animations
,并为鼠标当前所在的图像设置动画,但请记住,在mouseleave
中启动动画之前,您不应该stop
动画(所有元素,而不是单个元素),因为这将有助于元素恢复到旧状态。
工作演示
试试这个,
$(document).ready(function(){
$("#hoverslider ul li").bind("mouseenter",function(){
$("#hoverslider ul li").stop();
$(this).stop().animate({
width:"500px"
},"slow");
$(this).addClass("active");
$("#hoverslider ul li:not(.active)").stop().animate({
width:"141px"
});
})
$("#hoverslider ul li").bind("mouseleave",function(){
$(this).stop().animate({
width:"213px"
},"slow");
$(this).removeClass("active");
$("#hoverslider ul li:not(.active)").stop().animate({
width:"213px"
});
});
});
您可以使用setTimeout()
来触发放大动画。在mouseenter
事件处理程序中,如果上一个动画尚未启动,请使用clearTimeout()
取消它。
这样鼠标的快速移动不会触发所有图像放大。
我不完全理解你的问题,但似乎你可以用这种方式使用hover
方法
$( "#hoverslider ul li" ).hover(
function(){
$(this).animate({
width:"500px"
},"slow");
$(this).addClass("active");
$("#hoverslider ul li:not(.active)").animate({
width:"141px"
});
},
function(){
$(this).animate({
width:"213px"
},"slow");
$(this).removeClass("active");
$("#hoverslider ul li:not(.active)").animate({
width:"213px"
});
}
);
在线查看http://jsfiddle.net/augusto1982/At8XR/
如果这不是你需要的,请告诉我,我会解决的。
您可以使用下划线辅助方法debounce
http://underscorejs.org/#debounce
这将为您的回调创建一个包装器,并且在您仍然调用它的时候,每x秒只调用一次。这意味着,您可以有许多鼠标输入,并且该方法只会被调用一次,只有在x秒之后,没有注册鼠标输入,该函数才可以再次调用。
您应该使用jQuery的on
方法来添加事件,而不是旧的bind
方法。然后可以使用off
方法禁用事件处理程序。
相关文章:
- 表追加而不附加最后一个元素
- 无法在Ionic select中预先选择最后一个选项
- 为什么画布形状只在3个画布中的最后一个画布上渲染
- Jquery append oly获取循环Rails中的最后一个elemen
- 如何创建更好的方式来维护基于我的代码访问的最后一个页面
- dataTables-如何自定义分页类型以显示最后一个页码后面的省略号,
- 多维关联数组的最后一个索引
- 无法获取vis.js最后一个或第一个选定的网络节点
- 循环以检查数组中的最后一个图像
- 从输入值中删除最后一个单词
- 尝试使用Javascript正则表达式来获取“&"分隔文本,无论它是否's是最后一个值
- 为什么这个正则表达式不't匹配最后一个字母数字字符
- 如何从多个复选框中获取最后一个值
- 将OnClick函数设置为<ul>,最后一个ul是擦除第一个ul-s
- 使用querySelector()获取最后一个td元素
- Foreach循环只返回最后一个值
- 通过将6个月添加到今天来获得最后一个月的日期's日期
- 如何使用JavaScript forloop从JSON中删除最后一个逗号
- 'mousemove'画布中的事件侦听器-指针仅在最后一个矩形中更改
- 如何告诉Jquery只运行最后一个mouseenter事件