当前位置: 首页 > 知识库问答 >
问题:

在jQuery中展开全部和折叠全部,但未按要求工作

颛孙麻雀
2023-03-14

我是jQuery的新手,我在下面创建了一个页面,并且有jQuery函数用于展开和折叠。所有的工作都很好,除了以下事实,一些子元素已经展开/折叠了,那么如果我做了全部展开/全部折叠,那么它对子元素做了相反的操作,就像我做toggle函数一样,如果子元素已经展开,而我做了全部展开,那么它将展开其余的div但折叠已经展开的元素,反之亦然。请建议如何解决这个问题。谢谢.

    $(function(){
          $('[id^=hideAns],[id^=showAns]').click(function(){
                $(this).hide();
                $(this).siblings().show();
                $(this).closest('.qbox').find('[id^=ans]').toggle(500);
          });
        });

    $(function(){
          $('[id^=showall],[id^=hideall]').click(function(){
                $(this).hide();
                $(this).siblings().show();
                $('.qbox').find('[id^=ans]').toggle(500);
                $('.qbox').find('.icons').toggle();
          });
        });
<form name="contenttemp" id="contenttemp" method="post">

<div id="contentDiv" class="wrapperBox"><br>
<span class="showHideTxt" id="showall" style="float:right; cursor:pointer;">Show all</span>
<span class="showHideTxt" id="hideall" style="float:right; display:none; cursor:pointer;">Hide all</span><br>


    <div class="qbox">

        <span class="qclass">Q. No.1)
            <img id ="showAns" class="icons" src="img/expand.png" alt="show" width="20" height="20" style="float:right; cursor:pointer;">
            <img id="hideAns" class="icons" src="img/collapse.png" alt="hide" width="20" height="20" style="float:right; display:none; cursor:pointer;">
        </span>
        <span class="qclass">This is test question 109</span>
        <hr />
        <span style="display:none;"  id="ans">This is test answer 109</span>
    </div>
    <br>

    <div class="qbox">

        <span class="qclass">Q. No.2)
            <img id ="showAns" class="icons" src="img/expand.png" alt="show" width="20" height="20" style="float:right; cursor:pointer;">
            <img id="hideAns" class="icons" src="img/collapse.png" alt="hide" width="20" height="20" style="float:right; display:none; cursor:pointer;">
        </span>
        <span class="qclass">This is test question 108</span>
        <hr />
        <span style="display:none;"  id="ans">This is test answer 108</span>
    </div>
    <br>

    <div class="qbox">

        <span class="qclass">Q. No.3)
            <img id ="showAns" class="icons" src="img/expand.png" alt="show" width="20" height="20" style="float:right; cursor:pointer;">
            <img id="hideAns" class="icons" src="img/collapse.png" alt="hide" width="20" height="20" style="float:right; display:none; cursor:pointer;">
        </span>
        <span class="qclass">This is test question 105.     Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</span>
        <hr />
        <span style="display:none;"  id="ans">This is test answer 105</span>
    </div>
    <br>

</div>
</form>

共有1个答案

胡墨竹
2023-03-14

使用.hide().show()要比使用.toggle()...

    $(function(){
      $('[id^=showAns]').click(function(){
            $(this).hide();
            $(this).siblings().show();
            $(this).closest('.qbox').find('[id^=ans]').show(500);
      });
     $('[id^=hideAns]').click(function(){
            $(this).hide();
            $(this).siblings().show();
            $(this).closest('.qbox').find('[id^=ans]').hide(500);
      });
     $('[id^=showall]').click(function(){
            $(this).hide();
            $(this).siblings().show();
            $('.qbox').find('[id^=ans]').show(500);
            $('.qbox').find('[id^=showAns]').hide();
            $('.qbox').find('[id^=hideAns]').show();
      });
    $('[id^=hideall]').click(function(){
            $(this).hide();
            $(this).siblings().show();
            $('.qbox').find('[id^=ans]').hide(500);
            $('.qbox').find('[id^=showAns]').show();
            $('.qbox').find('[id^=hideAns]').hide();
      });
    });

请查一下..Jsfidle

这也许就是你的答案,你正在寻找的..!!

 类似资料:
  • 了解如何在 Dreamweaver 中折叠和展开代码以查看文档的各个部分而无需滚动。 您可以折叠和展开代码片段,以便无需滚动即可查看文档的不同部分。 例如,若要查看 head 标签中所有应用于页面下方较远处的一个 div 标签的 CSS 规则,请折叠 head 标签和 div 标签之间的所有代码,以便同时看到这两部分代码。 您可以选择要折叠的代码部分进行折叠。还可以在 HTML、PHP、XML 以

  • 以下是Bootstrap4文档中的代码片段,位于:https://getbootstrap.com/docs/4.0/components/collapse/ 我正在尝试在我的引导手风琴中实现类似的折叠/扩展所有功能。我发现这个实现并没有按我的预期工作。这只是将面板的状态更改为与当前相反的状态。 例如: 面板1:隐藏 面板2:隐藏 面板3:隐藏 变成 面板1:可见 面板2:可见 面板3:可见 这很

  • 所以我有一个带有AppBarLayout和CollapsingToolbarLayout的CoordinatorLayout。下面是它展开(左图)和折叠(右图)时的样子 我遇到的第一个问题是,当我向下滚动包含两个文本视图的蓝色FrameLayout时,它不会折叠。我希望只有工具栏在完全折叠时才可见。我尝试过一些事情,比如改变滚动标志,在视图和视图组之间移动,但没有成功。这是xml,我还将windo

  • I',试图构建一个扩展/折叠菜单。 我有一个主导航栏,里面有3个子菜单。默认情况下,子菜单的高度为50px,但一旦点击,这个高度就会变为200px。再点击一下,让它塌陷回原来的50px。 让我烦恼的是,当我展开subMenu1,然后展开Submenu2-Submenu1保持展开,并且我希望它在第二个子菜单被选中时折叠。 这是我的代码; 和jQuery: 我想知道什么功能或什么使用来确保一旦任何子菜

  • 问题内容: 我能够展开和折叠单元格,但我想在UITableViewCell内调用函数(展开和折叠)以更改按钮标题。 问题答案: 如果你想在细胞获得更大的身体,那么,你有你的店,在使用: 然后,当您想在didSelectRow中展开一个时: 编辑 这将使单元动画自己变大,您不需要单元中额外的动画块。 编辑2

  • 本文向大家介绍vue多级复杂列表展开/折叠及全选/分组全选实现,包括了vue多级复杂列表展开/折叠及全选/分组全选实现的使用技巧和注意事项,需要的朋友参考一下 首先,来看下效果图 在线体验地址:https://hxkj.vip/demo/multipleList/。温馨提示,打开之后按F12,使用手机模式食用,口味更佳! 可以看出,这个列表有三种展现形式: 1.第一层级中包含直属子项和第二层级,其