javascript - 检测鼠标是否在多个元素之外

标签 javascript jquery hover mouseover

我在这里做了一个 fiddle :

http://jsfiddle.net/RrxpT/

因此,当鼠标位于蓝色框上方时,需要将红色框放置在蓝色框上方。正如您所看到的,它是有效的,但我还希望如果红色框不在任何蓝色框的顶部,则将其隐藏。

我将代码更改为:

if(box.is(':hover')){
  // put red box on top
}else{
  // hide red box
}

http://jsfiddle.net/RrxpT/1/

但是效果不太好:s

你有什么提示吗?

最佳答案

假设我已经正确理解了这个问题,那么我将停止使用 mousemove ,而是将 mouseentermouseleave 事件处理程序委托(delegate)给应该的元素触发叠加:

$("body").on("mouseenter", ".Box", function () {
    // Show the overlay
}).on("mouseleave", ".Box", function () {
    // Hide the overlay
});

因为覆盖层位于元素顶部,所以当您在元素本身内移动鼠标时,覆盖层将无法正常工作。要解决此问题,您可以向叠加层添加 CSS 属性:

#over {
    /* ... */
    pointer-events: none;
}

这是一个working example .

关于javascript - 检测鼠标是否在多个元素之外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19635271/

相关文章:

jquery - JQGrid - 无法使用参数向网格添加行

php - 尝试创建 Sprite 时,悬停图像仅显示原始图像而没有悬停图像。有任何想法吗?

javascript - addeventlistener click 仅在第一次单击时起作用

javascript - 自动将焦点设置在动态加载的输入字段上

javascript - 如何缩短主干路由器的长需求列表

jquery - 单击 div 下方的图像

jquery - 单次 CSS3 变换后的双重 CSS3 变换

jquery - 鼠标悬停在菜单项上

css - 在 IE7 中将鼠标悬停在背景图片上会停止加载指示

javascript - 为什么现代浏览器 JS 引擎是多线程的?