如何在jquery上并排区分mouseout/live事件
How to differ mouseout/leave events by side on jquery?
有没有办法知道鼠标事件是否从元素的特定一侧离开?我的意思是,我有一个带有mouseover/mousenter事件的DIV,只有当鼠标离开DIV的左侧和右侧时,我才想触发该动作,但如果它从底部或顶部离开,它不应该触发任何动作。
提前谢谢。
使用jQuery,您可以使用事件的offsetX属性,如下所示:
$('#element').mouseout(function(e) {
if (e.offsetX < 0 || e.offsetX > $(this).width()) {
alert('out the side!');
}
});
我不认为该属性是可靠的跨浏览器(w/ojQuery),我相信jQuery将其规范化(我已经在Chrome和IE7-9中测试过它)。基本上,该属性包含触发事件时光标相对于目标元素的位置。如果该值小于0或大于元素的宽度,则表示光标离开元素边界时位于元素的左侧或右侧之外。
您可以检查事件对象的pageX
和pageY
属性,并将它们与相关元素的维度进行比较(例如,从offset
添加outerWidth
/outerHeight
(视情况而定))。
我意识到这是一个老问题,但我一直在寻找类似的悬停效果。我发现jquery.haverdir
可能很方便。。。
这不是一个简单的方法,AFAIK,但它是可以做到的。
鼠标移出时,将鼠标位置与元素位置进行比较。
请参阅jQuery的鼠标位置教程:http://docs.jquery.com/Tutorials:Mouse_Position
(它在教程中使用mousemove,但也适用于mouseenter/mouseleve)
也许您可以使用mouseout jquery函数(或mouseleave?),并添加一个带有javascript的自定义处理程序,以获取元素的坐标、高度和宽度,并跟踪鼠标坐标是否超过您的边界。
即您的鼠标退出事件触发,处理程序将元素定位在(x,y)->(10,10),高度为20,宽度为20。如果鼠标坐标在X轴上大于30,在Y轴上介于10和30之间,则鼠标在右手边向左。
- 音频控件在mouseover上显示,在mouseout上淡出
- 使用Facebook live API创建实时视频对象时的隐私设置
- Ajax Live搜索发布到Laravel视图
- Gridview ImageButton更改mouseover和mouseout上的图像
- d3防止在上下文菜单上触发mouseout
- JavaScript and LiveView (TIBCO Live Datamart)
- Jquery live()绑定没有'I don’我对某些元素不感兴趣
- JQuery.live()工作不正常
- 在mouseover上添加边框,在mouseout上删除边框
- 将.live或.on添加到jquery函数中
- Mouseover和Mouseout的行为没有达到预期
- 如何禁用mouseout可见性=“;隐藏的“;对小于768px的介质的影响
- Nav<ul>mouseout吗?如何修复
- 在Max for Live中使用命名管道
- Fancybox:让它在mouseover/mouseout上工作
- jQuery'单击'自动激发'live'
- 如何使用ON而不是LIVE
- 限制 .live() 函数在 JavaScript 中变为活动状态的次数
- jQuery live()已弃用:对mouseenter和mouseout使用on
- 如何在jquery上并排区分mouseout/live事件