我想抓住位于其他元素下的元素的鼠标事件。
以下是我的例子:http://jsfiddle.net/KVLkp/13/
现在我想要的是当鼠标在红色方块上时蓝色方块有黄色边框。
重要的是:
感谢您的帮助
编辑: 我已经为我的一般案例写了一个更完整的例子: - DOM中的img顺序不固定,可以在实时更改 - 顶部和底部图像具有不同的大小和位置
感谢大家!
答案 0 :(得分:1)
您可以尝试以下方面的内容:
<style>
img.hover {
border-color : yellow;
}
</style>
<script>
$('img').mouseenter(function () {
$(this).addClass("hover");
}).mouseleave(function (e) {
var next = e.relatedTarget;
if (next.tagName.toUpperCase()!="IMG"
|| $(next).hasClass("hover"))
$(this).removeClass("hover");
});
</script>
我没有直接设置边框的颜色,而是定义了一个名为“hover”的类来设置颜色,这样我就可以轻松测试给定元素是否具有边框,而不是硬编码颜色,然后我我已经利用event.relatedTarget
属性来查看鼠标离开时的位置。
只有当鼠标所在的元素不是图像或者是已经具有悬停类的图像时,才会删除“悬停”类。在这个演示中似乎工作得很好:http://jsfiddle.net/KVLkp/18/,但是如果两个图像并排在它们之间没有间隙或者顶部的图像没有完全“包含”(在由img重叠的坐标感觉 - 我决定继续发布它,因为我希望在演示中看到event.relatedTarget
会给你足够的开始来提出适合你真实情况的东西。
(注意:“hover”是一个类的坏名称,因为CSS已经有:hover
伪类,但到了我记得的时候,我无法在小提琴和这里改变它。 )
答案 1 :(得分:0)
我认为你使事情变得更加困难。只需简单地将事件放在内部正方形和外部正方形上,但不要使用“this”使用id来获取外部正方形,例如$('#bluesqure')然后就像悬停在蓝色方块上一样做你的工作。
我不知道这是否是您现实世界中可能的解决方案。