2013-03-19 160 views
0
$('#navigation li.parent').mouseover(function() { 
    $('#news-ticker').hide(); 
    $('ul.child', this).slideDown(); 
}); 
$('#navigation .child').mouseleave(function() { 
    setTimeout(function(){ 
     $(this).hide(); 
     $('#news-ticker').slideDown(); 
    },2000); 
}); 

...几乎可以工作,只是一个问题,我该如何隐藏subnav兄弟姐妹?如果我这样做$('ul.child', this).slideDown().siblings().hide();它隐藏了整个家长。隐藏的兄弟姐妹

+4

什么是HTML的样子? – rampion 2013-03-19 10:53:01

+0

请在jsfiddle中发布您的代码。 – 2013-03-19 10:58:07

回答

0

尝试:

$('#navigation li.parent').mouseover(function() { 
    $('#news-ticker').hide(); 
    $(this).parent().find("ul.child").not($('ul.child', this)).hide(); 
    $('ul.child', this).slideDown(); 
}); 
$('#navigation .child').mouseleave(function (e) { 
    setTimeout(function(){ 
     $(this).hide(); 
     $('#news-ticker').slideDown(); 
    },2000); 
    e.stopPropagation(); 
}); 
+0

on'mouseleave'子菜单不会隐藏,但newsticker会显示在它上面 – 3zzy 2013-03-19 12:18:22

0

只需隐藏所有元素,然后再显示要打开的元素。

$('ul.child', this).hide(); 
$('ul.child', this).slideDown(); 
-1

在了slideDown方法,我认为你可以给它双参数,像这样:

slideDown(500,function(){$(this).fadeOut(500,function(){$(this).hide();});}); 

首先是时间间隔,第二个是一个回调函数。一次函数调用完成。 但随着你的代码,我建议使用hover方法:

$('#navigation li.parent').hover(function(){ 
    //on mouse enter 
    $('#news-ticker').hide(); 
    $('.child', this).slideDown(500); 
},function(){ 
    //on mouse leave 
    $('#new-ticker').slideDown(500,function(){$('.child',this).hide();}); 
}); 

小很难说什么,我想是这样做没有HTML。抱歉。