jquery:嵌套标记和hover()在IE中不起作用

jquery:嵌套标记和hover()在IE中不起作用,jquery,internet-explorer,nested,hover,Jquery,Internet Explorer,Nested,Hover,我有一个这样的结构: <div id="container"> <span> <span></span> </span> <span> <span></span> </span> </div> 在Firefox/Opera中,它只在离开div时启动mouseout函数 (我多么想要它) 在IE中,它在鼠标点击的div内的每个*标记处触发mouseout函数。

我有一个这样的结构:

<div id="container">

<span>
   <span></span>
</span>

<span>
   <span></span>
</span>

</div>
在Firefox/Opera中,它只在离开div时启动mouseout函数 (我多么想要它)

在IE中,它在鼠标点击的div内的每个*标记处触发mouseout函数。 (*可能重要的是,span标记也有mouseover和out事件)

有人知道如何解决这个问题吗? (由于布局复杂,无法更改嵌套结构)


有什么想法吗

mhh我附近没有IE,但如果它工作正常,您可以尝试(和悬停演示)在其他行中使用您的代码似乎有问题。。。最后,您可以通过以下方法解决此问题:

$("#container").hover('',function()
{
    //Are you sure?
    if($(this).attr('id') == 'container')
    {
        alert('yup this is container');
    }
});

@伊维里奥:没用,id总是“容器”

我是如何解决的(到目前为止……):

信不信由你,container div的属性background color必须设置为一种颜色。 我仍然对这个事实感到震惊,但我尝试了好几次,这是css中唯一的背景色属性,它使它工作与否

而且:颜色#000000不起作用,任何其他颜色都起作用,包括“白色”

您尝试过:

$("#container").hover('',function(){ 
    alert("Out"); 
    return false;
});
或:

或者更好:

$("#container").mouseout(function(e){ 
    if($(e.target).is("#container")){
        alert("Out"); 
        return false;
    }
});
如果你只需要鼠标,没有理由使用悬停功能

 $("#container").hover('',function(ev){

      alert("Out");
      if( ev.stopPropagation ) { ev.stopPropagation(); } //For 'Good' browsers
      else { ev.cancelBubble = true; } //For IE

 });

另请阅读:

我在IE 6、7和8中遇到了类似的问题。Mafka是对的,必须设置背景色才能工作。如果无法在“容器”上设置背景色,您仍然可以将背景色设置为白色,并将不透明度设置为0

在jQuery中绑定mouseover事件之前,我已经使用以下JavaScript代码完成了这项工作:

if ($.browser.msie) {
    $("#container").css({
        background: '#fff',
        opacity: 0
    });
}
试试这个

$("#container").mouseleave(function(){ 
alert("Out"); 
});

至于IE,抵制这个蹩脚的浏览器,在博客上谈论它的彻底绝望,直到你的手指麻木为止。这种浏览器使网页设计师的时间价值减少了33%。你可以用任何方法杀死它。

解决它的方法是添加一个1px透明png作为背景


请参阅:

尽管我们自己可以解决这个问题,但了解您要查询的IE版本会有所帮助。太棒了!谢谢你嗅出了这个,我永远也不会明白。起初我以为你在开玩笑,直到它也帮我解决了!谢谢,而且,也可以使用透明的gif。
if ($.browser.msie) {
    $("#container").css({
        background: '#fff',
        opacity: 0
    });
}
$("#container").mouseleave(function(){ 
alert("Out"); 
});