2011-06-23 107 views
0

我正在努力與可摺疊的垂直菜單。下面的腳本的第一部分工作,以便UL上層顯示它的兄弟LIs,而其他ULs隱藏它們的兄弟LIs。 我的困難任務(至少對我來說)是使父UL成爲活動鏈接,保持其兄弟的LI可見。這是我在腳本的下半部分嘗試的。 我的a-links有時會得到一個尾隨散列(#),我想刪除它以便將我與活動URL進行比較。這是通過trimHash(字符串)功能完成的 - 在簡單的字符串上進行測試時工作,但不在此腳本中。 有什麼好的建議嗎?可摺疊菜單的JavaScript問題

$(document).ready(function() { 
     // Collapse everything but the first menu: 
     $(".mainmenu > li > a").not(":first").find("+ ul").slideUp(1); 
     // Expand or collapse: 
     $(".mainmenu > li > a").click(function() { 
      $(this).find("+ ul").slideToggle("fast"); 
     }); 

    $(".mainmenu li").each(function() { 
     var li = $(this); 
     var a = rtrimHash(li[0].firstChild); 

     if (a.href == location.href) { 
      $(this).find("+ ul").slideDown(1); 
     } 
    }); 

回答

0

我結束了這個解決方案。因爲它是一個WordPress站點,所以在逐步瀏覽菜單中的菜單項時,我可以通過比較鏈接到活動帖子來檢查每個鏈接是否處於活動狀態,並向這些菜單項插入類「current」:

echo '<li class="child'; 
if ($menuPost->ID == $post->ID) { echo ' current'; } 

然後使用jQuery找到李「當前」類的所有實例,並觸發父UL對了slideDown:

$(document).ready(function() { 
    // Collapse everything: 
    $("li.cat").find("+ ul").slideUp(1); 

    // Collapse everything but the first menu: 
    //$("li.cat").not(":first").find("+ ul").slideUp(1); 

    // Expand or collapse: 
    $("li.cat").click(function() { 
     $(this).find("+ ul").slideToggle("fast"); 
    }); 
    $("li.current").parent().slideDown(1); 
}); 

對不起,我沒有解決這個問題,通過JavaScript作爲我打算,但我取得的成就我想了。