你可以尝试沿着以下线的东西:
<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>
,而不是设置边框的颜色直接,我定义了一个名为“悬停”类,设置颜色,让我可以轻松测试一个给定的元素是否具有边界,而不是在任何地方对硬件颜色进行硬编码,然后我使用event.relatedTarget
属性来查看鼠标离开时的位置。
只有当鼠标要移动的元素不是图像或是已经有悬停类的图像时,才会删除“悬停”类。似乎在这个演示中工作得非常好:http://jsfiddle.net/KVLkp/18/,但如果两张图像并排放置,并且它们之间没有间隙,或者顶部的图像没有完全“包含”(在坐标意义上)由img重叠 - 我决定继续发布它,因为我希望在演示中看到event.relatedTarget
会给你足够的开始提供适合你的实际情况的东西。
(注:“悬停”是一类给CSS的名声已经拥有了:hover
伪类,但我记得我不能打扰更改它在小提琴和这里的时间)
鉴于您已经预料到了合理的解决方法,我不确定您的请求能否真正实现。将DOM虚拟成气泡,而不是任意定位。你对你的房屋有绝对的把握吗?例如:当然,你不能在另一个图像中嵌入一个图像,但是他们*有*是图像吗?他们是否可以成为具有背景图像的DIV元素? – 2012-03-08 09:43:18
下面是似乎可行的一种方法:http://jsfiddle.net/KVLkp/17/(虽然也许它失败了“两个图像之间没有链接”的标准)。 – nnnnnn 2012-03-08 10:13:12
@DavidHedlund他们确实必须是图像,因为多个图像将显示(非常像)随机位置,各种大小,因为我不想溢出dom(我的现实是我可以有4000个图像) – Guile 2012-03-08 10:34:09