jquery如何一次只有1个活动切换?

Posted

技术标签:

【中文标题】jquery如何一次只有1个活动切换?【英文标题】:jquery how to only have 1 active toggle at a time? 【发布时间】:2021-07-04 13:45:50 【问题描述】:

我正在制作一个需要我有 18 个图标的网站,每个图标都有自己的隐藏分配 div,一旦按下隐藏的 Div 就会向下滑动并显示在图标下方。这些图标必须与我要隐藏/显示的内容位于不同的 Div 中。

我在 wordpress 上使用 Elementor,因为我对网页设计和编程一无所知,

我找到了这个 jquery,当我单击图标时,我用它来显示和隐藏 Div。 我已将图标分配为 .showBlock1 .ShowBlock2 .ShowBlock3 等,将 Div 分配为 .hiddenBlock1 .hiddenBlock2 .hiddenBlock3 等......它按我想要的方式工作,除了我一次只想要 1 个活动,所以如果我按下icon1,它显示Div1,然后如果我按icon2,它会隐藏Div1并显示Div2等等。

jQuery(document).ready(function( $ )
    
  var hbtn = $(".showBlock");
  var hcon = $(".hiddenBlock");
  
   hcon.hide();
   hbtn.click(function(e) 
   var index = hbtn.index(this) 
   $(hcon).eq(index).slideToggle("slow");

   e.preventDefault();     
    );
);

jQuery(document).ready(function( $ )
    
  var hbtn = $(".showBlock2");
  var hcon = $(".hiddenBlock2");
  
   hcon.hide();
   hbtn.click(function(e) 
   var index = hbtn.index(this) 
   $(hcon).eq(index).slideToggle("slow");

   e.preventDefault();     
    );
);

由于我对编码一无所知,我一直在重复脚本并更改 .showBlock 和 .hiddenBlock 类上的数字。

【问题讨论】:

你不需要那么多代码来切换点击你可以检查this reference还有一个codepen link 我真的很抱歉,我真的很陌生,我真的很挣扎。我已经尝试使用该参考,但它不起作用(毫无疑问是我的错)。我需要的是单击一个按钮并在页面的不同部分创建一个 div 以隐藏/显示,但我似乎无法使其工作。 没有问题,这是帮助者社区,希望可以解决? 欢迎来到***。请花一些时间阅读***.com/help/how-to-ask,然后编辑您的问题以阐明例如“1”的含义... 我已经编辑了这个问题,我真的很抱歉,在我的脑海里似乎很清楚。希望现在可以理解了。 【参考方案1】:

也许以下内容对您有帮助?

$(function()
  var hbtn = $(".showBlock");
  var hcon = $(".hiddenBlock");
  
  hcon.hide();
   hbtn.click(function(e) 
     var curr=hcon.eq(hbtn.index(this)); 
     hcon.not(curr).hide(); 
     curr.slideToggle("slow");
     e.preventDefault();     
    );
);
.cont1 height:50px
.hiddenBlock display: inline-block; width:60px; height: 40px; background-color:#ccc
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class="cont1">
 <div class="hiddenBlock">1</div>
 <div class="hiddenBlock">2</div>
 <div class="hiddenBlock">3</div>
 <div class="hiddenBlock">4</div>
 <div class="hiddenBlock">5</div>
 <div class="hiddenBlock">6</div>
</div>
<div>
 <button class="showBlock">show 1</button>
 <button class="showBlock">show 2</button>
 <button class="showBlock">show 3</button>
 <button class="showBlock">show 4</button>
 <button class="showBlock">show 5</button>
 <button class="showBlock">show 6</button>
</div>

单击按钮首先会隐藏所有可见的.hcon 元素,然后将.slideToggle 与按钮位置对应的元素隐藏。

编辑

查看您的网页后,我可以简化您的结构,如下所示:

jQuery(function($)
 const btns=$("div.showBlock");
 const scts=$("section.hiddenBlock");
 $("section").on("click","div.showBlock",function()
  let curr=scts.eq(btns.index(this));
  scts.not(curr).hide();
  curr.toggle();
 );
)
.showBlock   display: inline-block; background-color:#ccc; 
              width:50px; margin:2px;padding:6px
.hiddenBlock background-color:#eea; width:192px; padding:6px; margin-top:8px
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
...
<section
  class="... elementor-element-51eaf85 ..." data-id="51eaf85" data-element_type="section">
  <div class="elementor-container elementor-column-gap-no">
    <div class="elementor-column ... elementor-element-1a773d0 showBlock" ...>
      one
    </div>
    <div class="elementor-column ... elementor-element-6b9441a showBlock" ...>
      two
    </div>
    <div class="elementor-column ... elementor-element-ce4f2d4 showBlock" ...>
      three
    </div>
  </div>
</section>
<section class="... elementor-element-fc98ed1 hiddenBlock ..." data-id="fc98ed1" style="">first section</section>
<section class="... elementor-element-cf64eb5 hiddenBlock ..." data-id="cf64eb5" style="display: none;">second section</section>
<section class="... elementor-element-f16da07 hiddenBlock ..." data-id="f16da07" style="display: none;">third section</section>
...

那里的 html 结构是该页面的摘录。我删除了一些类属性以提高可读性,并添加了一些临时 CSS 以使其“可展示”。

除此之外,我将你的类“showBlock1”、“showBlock2”、“showBlock3”统一到“showBlock”和“hiddenBlock”、“hiddenBlock2”、“hiddenBlock3”到“hiddenBlock”。

看看它并玩弄它......

【讨论】:

它似乎对我不起作用,因为我在这方面真的很糟糕,我不知道如何识别我的 18 个图标,(它们都分散在不同的部分page.) 到我的其他 18 个 Div(它们都分散在页面的不同部分。)。 如果你也能提供你的 HTML 会有所帮助,因为我上面的例子显然只是一个非常初级的例子。 自从我用 elementor 制作了网站,这是一个网页设计工具,我很难提供 html,但是这里是网站页面 uniway.chitas.cloud/protecao 也许它可以帮助我理解我的观点。非常感谢您的帮助,非常感谢您所做的一切。

以上是关于jquery如何一次只有1个活动切换?的主要内容,如果未能解决你的问题,请参考以下文章

javascript/jquery 数据录入 按一次tab键就可以切换到下一行,如何实现?

jQuery 在第一次切换后仅在 Safari iOS5 中单击 3 次后触发

AVFoundation - 相机切换一次,而且只有一次

如何使用一个按钮一次显示一个 VStack 中 2 个结构的内容?

如何切换网格布局中的小部件可见性?

带有开关按钮的 Android ListView - 一次只有一个开关处于活动状态