捕获鼠标离开body元素越过顶部边界
Capture mouse leaving body element crossing top border
我想知道是否有一种方法来捕获某种鼠标事件或另一个事件,当鼠标离开身体越过顶边界?
我在我的网站上有这个活动,当用户离开body元素而cookie没有设置时,我只向他们展示一次这个弹出框。但是这个事件会在身体的所有侧面触发。
tr = trigger event on leave
我想:
tr
+----------+
| |
no-tr| |no-tr
| |
+----------+
no-tr
但是我有
tr
+----------+
| |
tr| |tr
| |
+----------+
tr
我有这样的东西:
$("body").one("mouseleave", initPopup)
我的问题是,如果有一种方法来触发这个事件,只有当用户离开body的顶部边界,但不为其他边界?
您可以使用e.offsetY
并检查它是否小于0。偏移量从元素的左上角开始计算,Y向下递增。如果e.offsetY
小于0,则表示当鼠标移动到带有事件处理程序的元素上方时触发了事件。
如果页面是滚动的,你需要考虑scrollTop的值,因为偏移量将从元素的上角偏移位置,即使它从屏幕顶部滚动。
由于事件将被触发,即使鼠标移动到另一边,你不能使用.one()
,但你可以添加一个条件来检查事件是否已被触发从"鼠标离开"在顶部。
triggered = false;
$("body").on("mouseleave", function (e) {
if (e.offsetY - $(window).scrollTop() < 0 && !triggered) {
triggered = true;
alert("leave");
}
});
你可以用jquery试试:
$('#element').mouseout(function(e) {
if (e.offsetY < 0) {
// your event
}
});
编辑:在底部边缘编辑no-tr的答案。没有注意到这个问题!
相关文章:
- 单击顶部导航时如何进行向下滚动效果(向下滑动).
- jQuery粘性插件可变顶部间距
- 使用jQuery更改元素的顶部位置
- 背景图像顶部的滚动图像不移动
- 滚动然后捕捉到顶部而不是取消捕捉
- 当带有渲染器的DOM元素不在屏幕顶部时,移动了场景的坐标
- 如何在离子框架+有角度的框架中制作顶部标签
- 计算“;“左”;以及“;顶部“;来自固定位置浮动元素的值
- 如何在引导程序元素的顶部添加掩码
- 上传带有XMLHttprequest的文件-多部分/表单数据中缺少边界
- 滚动到Rails 4应用程序中的顶部jQuery
- 将列表元素动画制作到顶部
- 抵消在具有pageY计算的相对容器中位于顶部
- 输入类型按钮返回历史记录并返回顶部
- 对于如何在没有modernizr的情况下用边界半径的功能检测检查来替换我的旧浏览器检查
- 滚动固定滚动顶部()的跳跃效果
- 如何将图表放在顶部和底部
- 通过水平滚动将页眉固定到页面顶部
- jQuery:如何检测用户何时再次滚动到顶部
- 捕获鼠标离开body元素越过顶部边界