返回值:jQueryslideToggle([duration], [callback])

通过滑动的形式显示或隐藏匹配的元素。

.slideToggle() 方法对匹配元素的高度进行动画操作。这会导致页面中,在这个元素下面的内容往下滑。如果元素一开始是显示的,他最终会被隐藏;如果一开始是隐藏的,他会显示出来。 display 属性值会保存到 jQuery 的数据缓存中,之后还能恢复 display 的初始值。比如,如果一个元素的 display 值为 inline,那么当隐藏再显示时,他仍然是 inline。当高度变成 0 之后,会把 display 样式属性设置成 none 以确保这个元素不再对页面布局产生影响。

从 jQuery 1.4.3 起,增加了一个可选的参数,用于确定使用的缓冲函数。缓冲函数确定了动画在不同的位置的速度。jQuery默认只提供两个缓冲效果:swinglinear。更多特效需要使用插件。可以访问 jQuery UI 网站 来获得更多信息。

duration 参数可以提供一个毫秒数,代表动画运行的时间,时间越长动画越慢。还可以提供字符串 'fast''slow' ,分别对应了 200600 毫秒。如果没有设置 duration 参数,或者设置成其他无法识别的字符串,就会使用默认值 400 毫秒。

如果提供了回调函数,那么当动画结束时,会调用这个函数。通常用来几个不同的动画依次完成。这个函数不接受任何参数,但是 this 会设成将要执行动画的那个元素。如果对多个元素设置动画,那么要非常注意,回调函数会在每一个动画完成的元素上都执行一次,而不是对这组动画整体才执行一次。

比如下面这个页面:

<div id="clickme">
  Click here
</div>
<img id="book" src="book.png" alt="" width="100" height="123" />

点击之后调用 .slideToggle() 方法:

$('#clickme').click(function() {
  $('#book').slideToggle('slow', function() {
    // 动画完成
  });
});

如果元素一开始是显现的,那么第一次点击之后,他就会慢慢隐藏起来:

第二次点击后元素又出现了:

示例:

让所有的段落滑上或滑下,用时 600 毫秒。

<!DOCTYPE html>
<html>
<head>
<style>
  p { width:400px; }
  </style>
<script src="jquery.min.js"></script>
</head>
<body>

<button>Toggle</button>

  <p>
    This is the paragraph to end all paragraphs.  You
    should feel <em>lucky</em> to have seen such a paragraph in
    your life.  Congratulations!
  </p>

<script>


    $("button").click(function () {
      $("p").slideToggle("slow");
    });


</script>
</body>
</html>
演示:

示例:

让隔开的 div 交替出现或消失。

<!DOCTYPE html>
<html>
<head>
<style>
  div { background:#b977d1; margin:3px; width:60px; 
        height:60px; float:left; }
  div.still { background:#345; width:5px; }
  div.hider { display:none; }
  span { color:red; }
  p { clear: left; }</style>
<script src="jquery.min.js"></script>
</head>
<body>

<div></div>
<div class="still"></div>
<div style="display:none;">
</div><div class="still"></div>
<div></div>
<div class="still"></div>
<div class="hider"></div>
<div class="still"></div>
<div class="hider"></div>
<div class="still"></div>
<div></div>
<p><button id="aa">Toggle</button> There have been <span>0</span> toggled divs.</p>

<script>


  $("#aa").click(function () {
    $("div:not(.still)").slideToggle("slow", function () {
      var n = parseInt($("span").text(), 10);
      $("span").text(n + 1);
    });
  });



</script>
</body>
</html>
演示: