2012-11-30 67 views
2

我试图与IE兼容的菜单... :(显示孩子的onmouseover但移开鼠标隐藏孩子

我使用具有这种结构的CSS做了一个菜单:

<div id="menu"> 
<ul id="menuu"> 
<li><a href="#" class="parent">Parent</a> 
<ul class="children"> 
<li><a href="/#">name</a></li> 
<li><a href="/#">name</a></li> 
<li><a href="/#">name</a></li> 
</ul> 
</li> 
</ul> 
</div> 

我想要做的是:
- 当鼠标悬停a.parent节目的儿童在使用淡入
- 当你从父母都不亮,并且也出了儿童,孩子们隐瞒
- 当你在另一个孩子去掩盖前一个。子女。

我做了一个脚本,但我无法以正确的方式隐藏孩子。

<script> 
$('a.parent').hover(function() { 
    if($(this).next().hasClass('children')){ 
     $(this).next().fadeIn(); 
    }else{ 
     //alert('false'); 
    } 
}, 
function() { 
//here when you are out from a.parent 

}); 
</script> 

因为如果我隐藏的孩子(子)时,我从父不干了,我无法打开任何儿童的链接,因为当我从父母到孩子动,孩子是隐伏.. 所以我不知道如何解决它... :(

有人能帮助我吗? 非常感谢你!

+0

它在其他浏览器中工作吗? – user1167442

回答

0

如何与背景交融的对象,而不是使之消失?

0

这应该工作:

$('a.parent').bind('mouseover',function(){ 
    $(this).addClass('hover'); 
    if($(this).next('ul').hasClass('children')){ 
     $(this).next('.children').addClass('expanded');   
    $(this).next('.children').stop().fadeIn(); 
    } else { 
    // 
    } 
}).bind('mouseout',function(){ 
    $(this).removeClass('hover'); 
    if($(this).next('.children').not('.expanded')) 
     { 
     //If need be, you can add a delay here to make sure the mouse made it to 'children' 
     $('.children').stop().fadeOut(); 
     } 
}) 

$('.expanded').bind('mouseout',function(){ 
    $(this).removeClass('expanded'); 
    if($(this).prev('a').not('.hover')){ 
     $(this).stop().fadeOut(); 
    } 
}) 
+0

另外 - 其他人可能会不同意我这里 - 我认为这是一个很好的做法,以避免空$(elem).next()语句,因为代码可能会令人困惑。除非有一个原因(比如选择器不知道或者不明确),否则我总是把你正在寻找的选择器的名称作为$(elem).next()的参数,例如, $(本)。接下来( '孩子')。 – user1167442

+0

嗯不工作孩子仍然总是可见.. – peterpeterson

+0

再试一次 - 修订。 – user1167442