返回值:jQueryhide()

隐藏匹配的元素。

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

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

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

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

duration 参数可以提供一个毫秒数,代表动画运行的时间,时间越长动画越慢。还可以提供字符串 'fast''slow' ,分别对应了 200600 毫秒。如果没有设置 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>

演示: