2011-11-09 41 views
1

在IE8中,設置了寬度/高度的塊元素將正確顯示,但鼠標事件和鏈接僅適用於該元素內部的文本。直到元素內部的文本懸停後才能檢測到鼠標懸停。如果這是一個鏈接,只有文字可以點擊。如果我刪除了doctype(將它發送到怪異模式),它工作正常,但打破了網站上的很多樣式。有什麼方法可以讓這個工作正常嗎?IE8塊寬度/高度塊元素直到文本內部懸停爲止才檢測到鼠標懸停

+0

請注意,如果您想將IE發送到舊模式,則可以使用[X-UA兼容](http://msdn.microsoft.com/zh-cn/library/cc288325%28v=vs.85% 29.aspx),這可能比僅僅刪除文檔類型更好。對於你的問題的答案:我給sdo的建議+1 – Jeroen

+0

它看起來像你在你的問題中發佈的解決方案。如果您確實找到了解決方案,如果您將其作爲下面的答案張貼,然後「接受」您自己的答案,那麼對未來的讀者最好。 – Sparky

回答

0

這是由於頁面中存在無腳本標記引起的。刪除它解決了問題。我不知道爲什麼會這樣,但也許別人可以詳細說明。

1

傳統的鼠標事件有很多問題。我強烈建議使用JQuery的mouseenter()和mouseleave()事件。他們通過dom旅行,確保鼠標完全位於所討論的對象之內或之外。甚至有綁定事件的簡寫;你可以用簡便方法懸停()這兩個事件同時綁定到一個元素是這樣的:

$("#some-element").hover(
    function(){ 
    // mouse is inside the element 
    }, 
    function(){ 
    // mouse is outside the element 
    } 
); 

Check it out

希望這有助於。

+0

已經有一段時間了,但我相信我最初使用懸停和嘗試其他方法尋找解決方案。無論如何,這些或本地方法都不起作用,但問題似乎是由於無腳本標記的存在而引起的。 –

0

最近我有一個類似的問題,其中mouseenter事件只在你處於塊元素內的鏈接的頂部時才起作用。 (但我的問題是IE 7)

嘗試在塊元素中添加zoom: 1

#myBlockElement { 
    zoom: 1; 
} 

http://www.satzansatz.de/cssd/onhavinglayout.html


我也同意有關using .hover() in place of mouseenter and mouseleave對方的回答,但是,單靠可能無法在IE瀏覽器解決您的問題。


我也想確保我有一個有效的DOCTYPE,我的頁面上的任何IE問題的工作以前完全compliant in the W3C Validator