如何使用 jquery 改进这个侧边菜单示例?

Posted

技术标签:

【中文标题】如何使用 jquery 改进这个侧边菜单示例?【英文标题】:how improve this sample of side menu with jquery? 【发布时间】:2012-01-19 07:22:16 【问题描述】:

我有这个 html 代码的简单侧边菜单:

<div id="menu">
                    <div>
                        Menu Title
                    </div>
                    <ul class="menu">
                        <li>
                            <span>
                                first item
                            </span>
                            <ul>
                                <li>
                                    sub item
                                </li>
                                <li>
                                    sub item
                                </li>
                                <li>
                                    sub item
                                </li>
                            </ul>
                        </li>
                        <li>
                            <span>
                                second item
                            </span>
                            <ul>
                                <li>sub menu</li>
                                <li>sub menu</li>
                            </ul>
                        </li>
                        <li>
                            <span>
                                third item
                            </span>
                            <ul>
                                <li>
                                    sub menu
                                </li>
                                <li>
                                    sub menu
                                </li>
                            </ul>
                        </li>
                    </ul>
                </div>

而css是:

#menu
text-align:center;
font-size:13px;
font-family:tahoma;
color:#0000AA;
padding:2px 0;
#menu div
color:#0000AA;
#menu ul
text-align:right;
background-color: #FFFFFF;
list-style-type: none;
margin: 0px;
padding: 0px;
#menu ul li
display:block;
margin: 3px 2px;
cursor:hand;
cursor:pointer;
#menu ul li span
width:100%;
display:block;
background-color:#DDDDFF;
#menu ul li span:hover
background-color:#9999EE;
#menu ul li ul
display:none;
#menu ul li ul li
background-color:#EEEEEE;
margin:2px;
display: block;
#menu ul li ul li:hover
background-color:#FFFFFF;
.submenu
background-color: #CCCCFF;  

jquery 代码是:

    $(window).load(function()
  $(".submenu").children(this).slideUp("slow");
);
$(document).ready(function()
    $('ul.menu li span').click(function()
    $("ul.menu li").find('ul').slideUp('fast');
    $(this).parent(this).find('ul').slideDown('fast');
    );
);

我的盘点菜单位于http://jsfiddle.net/parseha/NkuG5/3/ 这个问题是:当点击第一项时,子菜单向上滑动然后向下滑动,我不想这样运行。 请原谅我的这篇文章和我在内容上的错误。 谢谢。

【问题讨论】:

【参考方案1】:

使用“兄弟”选择器,slideToggle() 将根据其当前状态显示或隐藏 DOM。

$(window).load(function()
  $(".submenu").children(this).slideUp("slow");
);
$(document).ready(function()
    $('ul.menu li span').click(function()
        $(this).siblings('ul').slideToggle('fast');

    );
);

【讨论】:

感谢 Kyle Macey,我以前使用过这个模型,但现在我需要 xbonez,【参考方案2】:

诀窍是跟踪展开了哪个菜单,并根据其状态(展开或折叠)确定要采取的操作(向上滑动或向下滑动)。

您可以通过在菜单项展开时向菜单项添加一个类来实现此目的,并在其折叠时删除该类。该类的存在将指示菜单是展开还是折叠。

jQuery 代码:

$(window).load(function() 
    $(".submenu").children(this).slideUp("slow");
);
$(document).ready(function() 
    $('ul.menu li span').click(function() 
        if ($(this).hasClass('current'))
        
            $(this).removeClass('current');
            $("ul.menu li").find('ul').slideUp('fast');

        
        else
        
            $(this).addClass('current');
            $(this).parent(this).find('ul').slideDown('fast');            

        
    );
);

Demo

【讨论】:

以上是关于如何使用 jquery 改进这个侧边菜单示例?的主要内容,如果未能解决你的问题,请参考以下文章

如何使侧边栏菜单元素居中

使用单击侧边栏导航菜单项调用活动

如何在wordpress类别侧边栏菜单中显示活动子菜单

如何像移动应用一样创建侧边导航菜单?

如何在ios中同时实现标签栏和侧边菜单?

如何快速制作侧边菜单(subSidemenu