2013-03-01 42 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遍歷)。