在 Firefox 中触发 mouseleave() 事件时的鼠标位置
The mouse position when firing mouseleave() event in Firefox
我试图检测鼠标在触发mouseleave((事件后去了哪里。
$( "#menu li" )
.mouseleave(function(e) {
if($('#menu li:hover').length==0){
//the mouse left menu
}else{
//the mouse is pointing to another li
}
});
在Opera,Chrome和IE上,这工作正常。但是在 Firefox 上,当鼠标仍在元素内时,似乎会触发 mouseleave 事件。因此,$('#menu li:hover'(.length 的值将始终为 1。
我想出了一个丑陋的解决方法:使用 setTimeout 函数包装 if 语句并给定间隔 1ms。 当然,这并不总是能解决问题。
有什么方法可以优雅地解决这个问题吗?
"我试图检测鼠标在触发mouseleave((事件后去了哪里。
我只想关注问题的这一部分,因为你对这个问题的解决方案不是很好。相反,您应该只使用 e.relatedTarget
属性。这将为您提供指针在离开li
时输入的节点。
$( "#menu li" ).mouseleave(function(e) {
document.querySelector("pre").textContent += ("'nLeave LI, Enter " + e.relatedTarget.nodeName);
});
ul {
padding: 30px;
background: orange
}
li {
padding: 10px;
background: yellow
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<ul id="menu">
<li>first
<li>second
<li>third
</ul>
<pre></pre>
文档甚至给出了一个类似于您的示例:
http://api.jquery.com/event.relatedTarget/
$( "a" ).mouseout(function( event ) { alert( event.relatedTarget.nodeName ); // "DIV" });
相关文章:
- JsFiddle上的鼠标事件不起作用
- 鼠标悬停事件影响列表中所有行中的按钮,而不仅仅是特定按钮
- node-webkit-从父窗口捕获iframe鼠标事件
- 如何在jquery中找到鼠标滚轮/触摸移动事件的走向
- 如何查明鼠标按下事件是否发生在滚动条上或元素中的其他任何位置
- 鼠标事件在OpenLaszlo应用程序中不起作用
- 为画布绘图添加鼠标事件
- 如何在元素中处理鼠标事件,但不能在其子元素上处理
- KineticJS鼠标事件问题
- 捕获鼠标关闭事件并在 Mozilla 中获取 clientX 和 clientY
- D3.js:如何在svg上移动鼠标时创建弹出事件
- 如果鼠标在元素上快速移动和关闭,则防止.hoop事件被垃圾邮件发送
- 如何在asp:linkButton上显示鼠标悬停事件上的图像
- GWT-允许鼠标事件在两个叠加画布之间传播
- 为什么不是't html<对象>元素响应鼠标事件
- 如何恢复Kinetic.js鼠标事件
- 鼠标事件's在CtrlKey不起作用的情况下单击
- 必须更改单击事件鼠标输入鼠标输出事件
- 当一个标记位于打开的infobox -事件鼠标悬停与infobox插件谷歌地图API v3
- 带有按钮的鼠标事件:鼠标悬停、onclick、静态