在我正在使用的库中,我的任务是将元素悬停在 dom 的前面。(我把它放大了,所以我需要看到它,然后在鼠标移出时将它缩小)。
我正在使用的库有一个简洁的解决方案,它appendChildren
在活动元素上使用将其移动到其父元素的末尾,从而进一步靠近 dom 的末尾并依次位于顶部。
问题是我相信因为你正在移动的元素是你悬停在mouseout
事件上的那个元素丢失了。您的鼠标仍在节点上,但未mouseout
触发事件。
我已剥离功能以确认问题。它在 Firefox 中运行良好,但在任何版本的 IE 中都无法运行。我在这里使用 jQuery 来提高速度。解决方案可以是普通的旧 Javascript,这将是一种偏好,因为它可能需要回到上游。
我不能在这里使用 z-index,因为元素是 vml,库是 Raphael,我正在使用toFront
调用。使用 ul/li 的示例在一个简单的示例中显示问题
<!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:**在发布更多信息之前,请查看所有答案的所有评论。