2011-12-02 215 views
0

我有一个JQuery的菜单,使用jQuery.addclass和.css展示subnav。我正在添加类并使用mouseover和mouseout来操作css。在Firefox,Chrome和Safari中一切正常,但在IE8中,它似乎在类之间“闪烁”。Jquery鼠标悬停/鼠标悬停IE8波动

这很难解释,但如果你看看我在FF和IE中的链接,你会明白我的意思。

http://trustmarkstaging.com/

这里是我的jQuery:

<script> 

$(document).ready(function(){ 

$("#nav .item-466").mouseover(function(){ 
$("#selector").addClass("item-466-selector"); 
$("#nav .menu .current ul li").css("display", "none"); 
$("#nav .menu .active ul li").css("display", "none"); 
$("#nav .menu .item-466 ul li").addClass("highlight"); 
}); 
$("#nav .item-466").mouseout(function(){ 
$("#selector").removeClass("item-466-selector"); 
$("#nav .menu .current ul li").css("display", "inline"); 
$("#nav .menu .active ul li").css("display", "inline"); 
$("#nav .menu .item-466 ul li").removeClass("highlight"); 
}); 

$("#nav .item-470").mouseover(function(){ 
$("#selector").addClass("item-470-selector"); 
$("#nav .menu .current ul li").css("display", "none"); 
$("#nav .menu .active ul li").css("display", "none"); 
$("#nav .menu .item-470 ul li").addClass("highlight"); 
}); 
$("#nav .item-470").mouseout(function(){ 
$("#selector").removeClass("item-470-selector"); 
$("#nav .menu .current ul li").css("display", "inline"); 
    $("#nav .menu .active ul li").css("display", "inline"); 
$("#nav .menu .item-470 ul li").removeClass("highlight"); 
}); 
$("#nav .item-472").mouseover(function(){ 
$("#selector").addClass("item-472-selector"); 
$("#nav .menu .current ul li").css("display", "none"); 
$("#nav .menu .active ul li").css("display", "none"); 
$("#nav .menu .item-472 ul li").addClass("highlight"); 
}); 
$("#nav .item-472").mouseout(function(){ 
$("#selector").removeClass("item-472-selector"); 
$("#nav .menu .current ul li").css("display", "inline"); 
    $("#nav .menu .active ul li").css("display", "inline"); 
$("#nav .menu .item-472 ul li").removeClass("highlight"); 
}); 

$("#nav .item-473").mouseover(function(){ 
$("#selector").addClass("item-473-selector"); 
$("#nav .menu .current ul li").css("display", "none"); 
$("#nav .menu .active ul li").css("display", "none"); 
    $("#nav .menu .item-473 ul li").addClass("highlight"); 
}); 
$("#nav .item-473").mouseout(function(){ 
$("#selector").removeClass("item-473-selector"); 
$("#nav .menu .current ul li").css("display", "inline"); 
$("#nav .menu .active ul li").css("display", "inline"); 
$("#nav .menu .item-473 ul li").removeClass("highlight"); 
}); 

$("#nav .item-474").mouseover(function(){ 
$("#selector").addClass("item-474-selector"); 
$("#nav .menu .current ul li").css("display", "none"); 
$("#nav .menu .active ul li").css("display", "none"); 
$("#nav .menu .item-474 ul li").addClass("highlight"); 
}); 
$("#nav .item-474").mouseout(function(){ 
$("#selector").removeClass("item-474-selector"); 
$("#nav .menu .current ul li").css("display", "inline"); 
$("#nav .menu .active ul li").css("display", "inline"); 
$("#nav .menu .item-474 ul li").removeClass("highlight"); 
}); 
}); 

</script> 

我的CSS:

<style> 
#nav .menu li { 
list-style: none; 
display: inline; 
float: left; 
border-radius: 10px; 
padding: 10px 16px; 
margin-left: 3px; 
} 

.highlight { 
display: inline!important; 
} 
</style> 

的HTML的结构是这样的:

<ul id="nav"> 
<li class="item-466 active">Page 1</li> 
    <ul> 
     <li>SubPage1</li> 
     <li>SubPage2</li> 
     <li>SubPage3</li> 
    </ul> 
<li class="item-470">Page 2</li> 
<li class="item-472">Page 3</li> 
<li class="item-473">Page 4</li> 
</ul> 

任何帮助将是的欣赏ED!提前致谢。 :)

+0

什么是$(“#selector”)? –

+0

#选择器正在控制导航下方的箭头。我删除了处理#selector的其余代码,因为它与隐藏和显示子菜单没有任何关系。对困惑感到抱歉。我应该在那里删除它。我不希望你们都必须通过大量不相关的代码。 –

回答

3

问题在于,您正在使用鼠标悬停。当鼠标移过嵌套在顶层LI内的元素时,它实际上不再是“覆盖”父元素(它覆盖子元素),所以它发送了鼠标,但鼠标从子元素向上冒泡到父LI ,这使得它闪烁回到它的鼠标悬停状态。

尝试查看mouseenter和mouseleave,而不是mouseover和mouseout。

另外,这个问题在除IE之外的浏览器中也很明显 - 我也看到了Chrome,但这是可以预料的。

编辑:只是在Chrome浏览器再次看到该页面,我没有看到闪烁,不知道如果你改变它,或者它只是围绕着古怪。无论如何,希望我的回答有帮助。

+0

谢谢德里克,我应该提到我已经尝试过mouseenter和mouseleave。我遇到同样的问题。 –

+0

你知道,现在我看得更近了,我注意到闪烁只发生在你的大横幅图像转换到'测试标题3'时......当它在测试标题1或2上时,我没有看到问题。很可能,导航和图像滑块/推子区域之间会发生一些冲突。 –

+0

Darek关于您的修改,您在Chrome上没有看到闪烁的唯一原因可能是因为Chrome没有注意到它太快。但它在那里,问题与您所描述的完全相同,mouseenter/mouseleave解决了他的问题 –