首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >保持所有手风琴选项可见,但打开/关闭或折叠一次

保持所有手风琴选项可见,但打开/关闭或折叠一次
EN

Stack Overflow用户
提问于 2014-02-19 20:28:53
回答 2查看 1.2K关注 0票数 2

我有一个定制的手风琴,默认情况下,它拥有"Visible/Open"状态下的所有选项。

当我第一次单击时,它会关闭特定的元素。但是当我再次单击它时,它打开特定的元素,但关闭所有的rest。

它应该折叠并打开一个元素(时间)。

这是我的手风琴代码:

HTML:

代码语言:javascript
复制
<div id='accordionmenu' class="clear">
<ul class="grid-18">
    <li class="inputRow active"> <a href='javascript:;'><h2 class="first">Heading #1</h2></a>
        <ul>
            <li>
                <div class="grid-8">Content for heading 1</div>
            </li>
        </ul>
    </li>
    <li class="inputRow active"> <a href='javascript:;'><h2 class="first">Heading #2</h2></a>
        <ul>
            <li>
                <div class="grid-8">Content for heading 2</div>
            </li>
        </ul>
    </li>
    <li class="inputRow active"> <a href='javascript:;'><h2 class="first">Heading #3</h2></a>
        <ul>
            <li>
                <div class="grid-8">Content for heading 3</div>
            </li>
        </ul>
    </li>

JS

代码语言:javascript
复制
 $('#accordionmenu > ul > li:has(ul)').addClass("has-sub");
 $('#accordionmenu > ul > li > a').click(function () {
     var checkElement = $(this).next();
     $(this).removeClass('active');
     $(this).closest('li').addClass('active');

     if ((checkElement.is('ul')) && (checkElement.is(':visible'))) {
         $(this).closest('li').removeClass('active');
         checkElement.slideUp('normal');
     }

     if ((checkElement.is('ul')) && (!checkElement.is(':visible'))) {
         $('#accordionmenu ul ul:visible').slideUp('normal');
         checkElement.slideDown('normal');
     }

     if (checkElement.is('ul')) {
         return false;
     } else {
         return true;
     }
 });

这里是相同的Fiddle: http://jsfiddle.net/XLw2Z/

如果你需要其他信息,请告诉我。

请建议一下。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-19 21:08:57

这是负责其他手风琴切换:

代码语言:javascript
复制
 if ((checkElement.is('ul')) && (!checkElement.is(':visible'))) {
     $('#accordionmenu ul ul:visible').slideUp('normal');
     checkElement.slideDown('normal');
 }

通过注释行$('#accordionmenu ul ul:visible').slideUp('normal');。一切都按你的意愿运作。

票数 2
EN

Stack Overflow用户

发布于 2014-02-19 20:36:39

试试这个http://jsfiddle.net/5vG9Z/

代码语言:javascript
复制
 $('#accordionmenu > ul > li:has(ul)').addClass("has-sub");
 $('#accordionmenu > ul > li > a').click(function () {

     $(this).next().toggle('slow')

     return false;
 });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21891692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档