javascript - 隐藏显示不适用于多个 div

标签 javascript html css hide show

我正在使用 slideToggle 方法来隐藏/显示一个 div。我试图在一个页面上多次复制此操作,但它只适用于第一个页面。我想出了一种方法让它在每个 div 上工作,但必须重命名每个 div 并在 javascript 中添加一个新函数。我可以做些什么来清理我的代码,因为我将在整个页面中使用它并为每个 div 创建新实例并不高效。

<script>
  $(document).ready(function() {
    $("#flip").click(function() {
      $("#panel").slideToggle("slow");
    });
    $("#flip2").click(function() {
      $("#panel2").slideToggle("slow");
    });
    $("#flip3").click(function() {
      $("#panel3").slideToggle("slow");
    });
  });

</script>

<p class="button-label">Active</p>
<button type="button" class="btn a-cart"><span>ADD TO CART</span></button>
<div id="flip">Click to view HTML</div>
<div id="panel" style="display:none">
  <textarea rows="3" cols="50">
    <button type="button" class="btn a-cart"><span>ADD TO CART</span></button>
  </textarea>
</div>

<p class="button-label">Disabled</p>
<button type="button" class="btn a-cart disabled"><span>ADD TO CART</span></button>
<div id="flip2">Click to view HTML</div>
<div id="panel2" style="display:none">
  <textarea rows="3" cols="50">
    <button type="button" class="btn a-cart disabled"><span>ADD TO CART</span></button>
  </textarea>
</div>

<p class="button-label">Select Options</p>
<button type="button" class="btn select-options"><span>select options</span></button>
<div id="flip3">Click to view HTML</div>
<div id="panel3" style="display:none">
  <textarea rows="3" cols="50">
    <button type="button" class="btn select-options"><span>select options</span></button>
  </textarea>
</div>

最佳答案

您可以使用类代替 id,并在回调函数中使用 .next() 方法:

$(document).ready(function(){
    $(".flip").click(function(){
        $(this).next('.panel').slideToggle("slow");
    });

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p class="button-label">Active</p>
    <button type="button" class="btn a-cart"><span>ADD TO CART</span></button>
    <div class="flip">Click to view HTML</div>
    <div class="panel" style="display:none">
            <textarea rows="3" cols="50"><button type="button" class="btn a-cart"><span>ADD TO CART</span></button>
            </textarea>
    </div>

    <p class="button-label">Disabled</p>
    <button type="button" class="btn a-cart disabled"><span>ADD TO CART</span></button>
    <div class="flip">Click to view HTML</div>
    <div class="panel" style="display:none">
            <textarea rows="3" cols="50"><button type="button" class="btn a-cart disabled"><span>ADD TO CART</span>
            </button>
            </textarea>
    </div>

    <p class="button-label">Select Options</p>
    <button type="button" class="btn select-options"><span>select options</span></button>
    <div class="flip">Click to view HTML</div>
    <div class="panel" style="display:none">
            <textarea rows="3" cols="50"><button type="button" class="btn select-options"><span>select options</span>
            </button>
            </textarea>
    </div>

关于javascript - 隐藏显示不适用于多个 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37056420/

相关文章:

javascript - 基于case语句动态打开 Accordion

javascript - 使用 Google Sheets 编写的脚本进行简单计算

javascript - 隐藏div点击其他

javascript - jQuery 对 Wordpress 内容进行动画处理

javascript - 匹配数组中的子数组。计划中的计划

javascript - node.js child_process spawn stdout 降低 highWaterMark

javascript - 使用 $window 配置 AngularJS 路由到深层路径

javascript - HTML JavaScript 我怎样才能创建这个表单?

Javascript:根据多个键确定并返回对象数组中的重复对象

html - 如何将未知大小的图像垂直对齐到 div 的中心?