在圖書館失去mouseOut事件我使用我當懸停在一個元素移動到DOM前面的任務。 (我把它做得更大,所以我需要看到它,然後在退出時將它縮小)。將活性元素在Internet Explorer
我使用的庫具有其使用有源元件上appendChildren它,因此進一步移動到結束其父朝向DOM的端部,進而在上面純溶液。
問題是,我相信,因爲要移動的元素是你徘徊在mouseout事件的一個丟失。鼠標仍在節點上,但mouseout事件未被觸發。
我已將功能剝離以確認問題。它在Firefox中工作正常,但在任何版本的IE中都不行。我在這裏使用jquery來提高速度。解決方案可以在普通的舊javascript ...這將是一種偏好,因爲它可能需要回流。
我不能在這裏使用z-index作爲元素是vml,庫是Raphael,而且我正在使用toFront調用。通過UL /李樣本顯示問題一個簡單的例子
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script src="js/jquery.min.js" type="text/javascript"></script>
<style>
li
{
border:1px solid black;
}
</style>
</head>
<body>
<ul><li>Test 1</li></ul>
<ul><li>Test 2</li></ul>
<ul><li>Test 3</li></ul>
<ul><li>Test 4</li></ul>
<script>
$(function(){
$("li").mouseover(function(){
$(this).css("border-color","red");
this.parentNode.appendChild(this);
});
$("li").mouseout(function(){
$(this).css("border-color","black");
});
});
</script>
</body>
</html>
編輯:這裏是一個鏈接到一個js糊箱看到它在行動。 http://jsbin.com/obesa4
**編輯2:**查看所有答案全部評論張貼在該地段的詳細信息之前。
我無法理解你的帖子。你想在鼠標懸停在元素上時觸發'mouseout'事件?你真正的問題是什麼? – lincolnk 2010-09-10 16:01:40
對於this.parentNode.appendChild(this);你試圖重新添加現有的LI元素?爲什麼不只是添加一個CSS類而不是用新的CSS添加/刪除相同的元素?或者,您的原始代碼是否需要從UL中的其他位置添加一個全新的元素來模擬您在開始時提到的「擴展」尺寸效果? – Gary 2010-09-10 16:08:15
Linkol我試圖讓示例代碼在ie中工作,就像它在Firefox中一樣。 mouseout事件不會觸發。我以li元素爲例。正如我在文章中所說的,元素實際上是VML元素。因此,像z-index或增加類的東西將無法工作,除非人們可以證明不同。 – johnwards 2010-09-10 16:37:57