jQuery点击按钮实现收缩隐藏功能

  • Post author:
  • Post category:其他


一、实现的功能

点击title区域的按钮,收缩/隐藏相应的内容区域,并改变按钮中的文案。

二、实现方法

采用jQuery中的slideToggle() 方法

定义和用法

slideToggle() 方法通过使用滑动效果(高度变化)来切换元素的可见状态。

如果被选元素是可见的,则隐藏这些元素,如果被选元素是隐藏的,则显示这些元素。


语法

$(selector).slideToggle(speed,callback)
参数 描述

speed

可选。规定元素从隐藏到可见的速度(或者相反)。默认为 “normal”。

可能的值:

  • 毫秒 (比如 1500)
  • “slow”
  • “normal”
  • “fast”

在设置速度的情况下,元素在切换的过程中,会逐渐地改变其高度(这样会创造滑动效果)。


callback

可选。toggle 函数执行完之后,要执行的函数。

如需学习更多有关 callback 的内容,请访问我们的 jQuery Callback 这一章。

除非设置了 speed 参数,否则不能设置该参数。

提示和注释

提示:如果元素已经隐藏,则该效果不产生任何变化,除非规定了 callback 函数。

三、代码

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <style>
    .box{width: 300px; border-bottom: 1px solid #ccc; background: skyblue;}
    .box:last-child{border: none;}
    .box h3{margin: 0; padding: 10px 0; overflow: hidden; zoom: 1;}
    .box h3 button{float: right;}
    .box .content{background: lightgreen;}
  </style>
</head>
<body>
  <div class="box">
    <h3>title1 <button>[收起]</button></h3>
    <div class="content">
      <div>内容1-1</div>
      <div>内容1-2</div>
      <div>内容1-3</div>
    </div>
  </div>

  <div class="box">
    <h3>title2 <button>[收起]</button></h3>
    <div class="content">
      <div>内容2-1</div>
      <div>内容2-2</div>
      <div>内容2-3</div>
    </div>
  </div>

  <div class="box">
    <h3>title3 <button>[收起]</button></h3>
    <div class="content">
      <div>内容3-1</div>
      <div>内容3-2</div>
      <div>内容3-3</div>
    </div>
  </div>

  <script type="text/javascript" src="http://daipianpian.com/common/js/jquery-3.1.1.min.js"></script>
  </head>
  <script type="text/javascript">
  // 收缩隐藏效果
  $(document).ready(function(){
      var buttonGroup = $('.box > h3 > button');
      buttonGroup.each(function() {
          $(this).click(function(){
              $(this).parent('h3').next().slideToggle();
              var btnText = $(this).text();
              if(btnText == '[展开]') {
                  $(this).text('[收起]');
              } else {
                  $(this).text('[展开]');
              }
          });
      });
  });
  </script>
</body>
</html>

本人前端程序员,长期混迹于各种前端开发中,现在专门为前端热爱者建了个微信群,和大家一起分享自己在工作、学习中遇到的技术知识或问题,还有各种资料和课程,各位感兴趣的可以加入哦~

微信前端交流群



版权声明:本文为daipianpian原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。