隐藏兄弟姐妹

时间:2013-03-19 10:50:51

标签: javascript jquery siblings

$('#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();它会隐藏整个父母。

3 个答案:

答案 0 :(得分:0)

在显示要打开的元素之前,只需隐藏所有元素。

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

答案 1 :(得分: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();
});

答案 2 :(得分:-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,我很难说我想做什么。遗憾。