0

我正在使用一个简单的 jquery 手风琴菜单。但我希望列表中的第二项默认打开,而不是 :first

如何才能做到这一点?

function initMenu()
{
     $('#menu ul').hide();
     $('#menu ul:first').show();
     $('#menu li a').click(function()
     {
          var checkElement = $(this).next();
          if((checkElement.is('ul')) && (checkElement.is(':visible')))
          {
               return false;
          }
          if((checkElement.is('ul')) && (!checkElement.is(':visible')))
          {
               $('#menu ul:visible').slideUp('normal');
               checkElement.slideDown('normal');
               return false;
          }
     });
}
$(document).ready(function() {initMenu();});

我还想知道是否可以使用选定的类来帮助使其更具动态性:

<div id="work_menu">
     <ul id="side_menu" class="nav_categories">    
         <li>
             <a href="celebratory-use">Celebratory Use</a>
             <ul>
                 <li><a  href="platters">Platters</a></li>
                 <li><a  href="celebratory-servers">Servers</a></li>
             </ul>
         </li>
         <li><a  class="selected" href="daily-use">Daily Use</a>
            <ul>
            <li><a  href="bowls">Bowls</a></li>
            <li><a  href="butter-dishes">Butter Dishes</a></li>
            <li><a  href="mugs">Mugs</a></li>
            </ul>

        </li>      </ul> </div>
4

1 回答 1

1

尝试$('#menu ul:eq(1)').show();代替$('#menu ul:first').show();,这将适用.show()于 中的第二个元素ul元素#menu。如果没有 HTML,就很难看出这是否是正确的解决方案。

要使其显示ul给定.selected类的项目之后的内容,请更改$('#menu ul:eq(1)').show();$('#side_menu li > a.selected + ul').show();,只要.selected该类始终应用于<a>. 如果您希望将其应用于 的另一个同级元素<li>,则将选择器更改为$('#side_menu li .selected + ul').show();,这样更通用。

于 2013-05-30T17:19:24.480 回答