2011-11-17 56 views
1

我有一個圖像庫。jQuery CSS把圖像放在圖像上變成閃光燈

有一個拇指列表。將鼠標懸停在圖像上時,會出現一個紅色的x,允許您刪除該圖像。

我的問題是,當你懸停在它上面時,x閃爍。我假設它看到x div出現時,它認爲這是一個鼠標事件,因此隱藏它。

有沒有更好的方法來做到這一點?

http://jsfiddle.net/guyfromfl/7ZNGY/1/

的X線正確對我的佈局,而不是在的jsfiddle,但它不是什麼大不了的事,試圖修復...

+0

@Interstellar_Coder ...你不能看到它嗎?如果沒有,我會發布它 – guyfromfl

回答

4

無需修改HTML結構,則需要使用mouseentermouseleave事件,像這樣:

http://jsfiddle.net/7ZNGY/3/

mouseout只考慮你的綁定元素的目標,因此,如果您將鼠標懸停在容器裏面的東西它會算作一個「老鼠」,而mouseleave明白,只有離開容器算作一個「鼠標」

所以當你h紅色在X按鈕,它計數爲「鼠標移出」,這隱藏了元素,你現在在其觸發mouseover平原容器,而這種循環使頻閃效應

編輯代碼:

$(document).delegate('.preview_image', 'mouseenter mouseleave', function (event) { 
    var eId = $(this).find("img").get(1).id; 
    var id = eId.replace("preview_", ""); 
    if (event.type == 'mouseenter') { 
     $('#delete_img_' + id).fadeIn(100); 
    } else { 
     $('#delete_img_' + id).fadeOut(100); 
    } 
}); 
$(document).delegate('.delete_container', 'click', function() { 
    alert("You dirty rat"); 
}); 
+0

+1 - 我比我的回答更喜歡它! – mrtsherman

+0

@ mrtsherman,好點。編輯 – Esailija

+0

對不起延遲必須照顧的東西......但就是這樣。非常感謝!! – guyfromfl

0

你的小提琴是不完整的,但我想你綁定到懸停在img元素上。相反,將圖像放入另一個容器中,該容器將捕獲單擊事件。紅色的x也應該是這個容器的一部分。這樣即使紅色x位於圖像上,它也不會竊取焦點並移除懸停。

<span class="imgcontainer"> 
    <img src="" /> 
    <img src="redx" position:absolute; top: 0; right: 0; /> 
</span> 

$('imgcontainer').hover()... 
+0

缺少什麼?它對我的運行良好? – guyfromfl

+0

@guyfromfl - 它原本錯過了js。用戶在問題發佈後添加它。 –

+0

是的,我意識到它,然後更新到/ 1 /後,我發現它...我希望我抓住它的速度不夠快,但你們太快大聲笑 – guyfromfl