返回值:jQueryhide()

隐藏匹配的元素。

隐藏元素的最简单方法,就是调用不带参数的 .hide() 方法:

$('.target').hide();

此时元素会被立即隐藏,不带有任何动画。这基本等价于 .css('display', 'none') ,只不过此时 display 的属性值会保存到 jQuery 的数据缓存中,之后还能恢复到 display 的初始值。比如,如果一个元素的 display 值为 inline,那么当它被隐藏再显示时,它的值仍然是 inline。

如果提供了 duration 参数,.hide() 就变成一个动画方法了。.hide() 会同时对元素的高、宽以及透明度进行动画操作。 当它们的属性值变为0时,display 样式的属性会被设置成 none ,以此来保证运行动画的那个元素不再影响页面的布局。

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

注意,在调用 .hide() 时该方法会被立刻执行,如果没有指定 duration 或 duration 为0,则同时还会覆盖动画队列。

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

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

我们可以对任何元素应用动画,比如下面这个例子,对图片应用动画:

<div id="clickme">
  Click here
</div>
<img id="book" src="book.png" alt="" width="100" height="123" />
With the element initially shown, we can hide it slowly:
$('#clickme').click(function() {
  $('#book').hide('slow', function() {
    alert('Animation complete.');
  });
});

补充说明:

  • 所有的 jQuery 动画, 包括 .hide(), 都可以被关闭,通过全局设置 jQuery.fx.off = true, 效果等同于将动画时间 duration 设置成 0. 可以访问 jQuery.fx.off 来获得更多信息。

示例:

点击链接后隐藏所有段落。

<!DOCTYPE html>
<html>
<head>
<script src="jquery.min.js"></script>
</head>
<body>

<p>Hello</p>
  <a href="#">Click to hide me too</a>
  <p>Here is another paragraph</p>

<script>


    $("p").hide();
    $("a").click(function ( event ) {
      event.preventDefault();
      $(this).hide();
    });


</script>
</body>
</html>

演示:

示例:

在600毫秒内(字符串常量为"slow"),将所有隐藏的段落隐藏出来。

<!DOCTYPE html>
<html>
<head>
<style>
  p { background:#dad; font-weight:bold; }
  </style>
<script src="jquery.min.js"></script>
</head>
<body>

<button>Hide 'em</button>

  <p>Hiya</p>
  <p>Such interesting text, eh?</p>

<script>


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


</script>
</body>
</html>

演示:

示例:

快速隐藏所有的 span 元素,用时 200 毫秒。一个结束后立即开始下一个。

<!DOCTYPE html>
<html>
<head>
<style>
  span { background:#def3ca; padding:3px; float:left; }
  </style>
<script src="jquery.min.js"></script>
</head>
<body>

<button id="hidr">Hide</button>
  <button id="showr">Show</button>
  <div>

    <span>Once</span> <span>upon</span> <span>a</span> 
    <span>time</span> <span>there</span> <span>were</span> 
    <span>three</span> <span>programmers...</span>

  </div>

<script>


    $("#hidr").click(function () {
      $("span:last-child").hide("fast", function () {
        // use callee so don't have to name the function
        $(this).prev().hide("fast", arguments.callee); 
      });
    });
    $("#showr").click(function () {
      $("span").show(2000);
    });



</script>
</body>
</html>

演示:

示例:

当点击 div 之后用 2 秒时间隐藏这个 div。当它完全隐藏后将其移除。试试一次多点几个 div 看看。

<!DOCTYPE html>
<html>
<head>
<style>
  div { background:#ece023; width:30px; 
        height:40px; margin:2px; float:left; }
  </style>
<script src="jquery.min.js"></script>
</head>
<body>

<div></div>

<script>


    for (var i = 0; i < 5; i++) {
      $("<div>").appendTo(document.body);
    }
    $("div").click(function () {
      $(this).hide(2000, function () {
        $(this).remove();
      });
    });


</script>
</body>
</html>

演示: