你可以嘗試沿着以下線的東西:
<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