2013-02-08 47 views
0
我有在IE9彈出一個DIV用下面的代碼有問題

正常工作:JQuery的。是(「:懸停」)不是IE9

<li id="info001" class="listInfo" onmouseover="ShowPreview(this);" onmouseout="HidePreview();"> 

和我HidePreview檢查,以確保鼠標ISN 「T在的listItem或預覽本身,比如:

function HidePreview() { 
    if (!($('#thePreview').is(':hover') || $('#info001').is(':hover'))) { 
     $('#thePreview').hide(); 
    } 
} 

這個工作在Chrome和Firefox罰款,但在IE9預覽開始閃爍,因爲我動過的listItem和預覽兩種,然後我單獨預覽,它會被隱藏起來。

有什麼辦法可以避免這種情況?

編輯:爲了清楚起見,預覽div與info001 li重疊足以輕鬆移動它們之間的鼠標。

編輯:http://jsfiddle.net/ControlFreak/QQsGS/

+1

我不認爲':hover'是一個有效的jQuery選擇器。它不會出現在他們的[文檔](http://api.jquery.com/category/selectors/) – 2013-02-08 19:21:23

+0

你應該真的使用jQuery事件處理程序來代替html onmouse * =「」處理程序 – 2013-02-08 19:24:19

+0

@ PatBurke我不反對你。我正在動態創建ListItems,並且更容易將處理程序放在那裏。但是,它應該以任何方式工作。 – ESDictor 2013-02-08 19:30:27

回答

0

嘗試做這樣的事情,而不是:

var $thePreview = $("#thePreview"); 

$(".listInfo").hover(
    function() { 
     $thePreview.show(); 
    }, 
    function() { 
     $thePreview.hide(); 
    } 
); 

Working example on jsFiddle

您仍然可以使用該代碼,您只需將僞事件從懸停更改爲mouseenter mouseleave(如果您運行的是1.9+以上)即可。查看更多信息:jquery.com/upgrade-guide/1.9/#hover-pseudo-event

+0

我猜這在我的例子中並不清楚,但是預覽與ListItem重疊,並且如果光標在任何一個上面,預覽保持不變,類似於彈出式菜單。預覽上有可點擊的元素,所以這是必需的。 – ESDictor 2013-02-11 14:23:26

+0

你能發佈更多你的代碼嗎? – 2013-02-11 18:45:38

+0

將jsFiddle添加到原始郵件 – ESDictor 2013-02-11 19:31:48