2013-03-01 86 views
1

我试图制作一个折叠较早的扩展的chioces的菜单,但我无法使它工作。我的菜单溢出空间

var currentId; 

$(document).ready(function() { 
    $(":range").rangeinput({ 
     progress: true 
    }); 

    /* Slide Toogle */ 
    $("ul.expmenu li > div.header").click(function() { 
     var arrow = $(this).find("span.arrow"); 

     if (arrow.hasClass("up")) { 
      arrow.removeClass("up"); 
      arrow.addClass("down"); 
     } else if (arrow.hasClass("down")) { 
      arrow.removeClass("down"); 
      arrow.addClass("up"); 
     } 

     $('#' + currentId).parent().find("ul.menu").slideToggle(); 
     $(this).parent().find("ul.menu").slideToggle(); 
     currentId = $(this).attr('id'); 
    }); 
}); 

你会发现在这个ADRESS主页:http://admin.dq.se/kramers/nyamenyer.html

所以,如果我按“BIL”我想“BIL”扩大..事后如果我按“MC”我想BIL崩溃和MC进行扩展。谢谢您的帮助!

+0

你能否更具体地解释除了“我无法使它工作”之外还有什么不对? – 2013-03-01 15:32:07

回答

2

滑了一切往下滑

$("ul.expmenu li > div.header").click(function() { 

$(this).parent().siblings().find('ul.menu').slideUp(); 
$(this).parent().siblings().find('span.arrow').removeClass('up').addClass('down'); 

.... 

}); 
+0

这个唯一的问题是,如果用户点击已经展开的菜单的箭头,菜单会立即上下滑动。用户体验方面有些尴尬。 – chipcullen 2013-03-01 15:33:16

+0

它创建了很多额外的函数调用。 – Gus 2013-03-01 15:34:36

+0

Ah:S正确,我会尽快更新我的代码 – Anton 2013-03-01 15:35:38

0

这是不完全正确前:

$(this).parent().find("ul.menu").slideToggle(); 

你需要去得更高:

$(this).closest('ul.expmenu').find("ul.menu").slideToggle(); 
+0

语法更新。 – isherwood 2013-03-01 15:36:01

0

我会做一些粗略像这样:

/* Slide Toogle */ 
    $("ul.expmenu li > div.header").click(function() { 
    var arrow = $(this).find("span.arrow"); 

    if (arrow.hasClass("up")) { 
     arrow.removeClass("up"); 
     arrow.addClass("down"); 
    } else if (arrow.hasClass("down")) { 
     $('.arrow.up.').parents('li').children('ul.menu').slideUp(); 
     $('.arrow.up.').removeClass('up').addClass('down'); 
     arrow.removeClass("down"); 
     arrow.addClass("up"); 
    } 

只有在问题箭头仍然“关闭”的情况下,它基本上会查找任何“向上”箭头,并将其菜单向上(请注意DOM遍历)。