jquery show()和hide()让元素动起来

基本用法

show() 方法
显示出隐藏的 <p> 元素。

 代码如下 复制代码

$(".btn2").click(function(){
  $("p").show();
});

hide()隐藏可见的 <p> 元素:

 代码如下 复制代码

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

让元素动起来

jQuery代码如下:

 代码如下 复制代码

$("element").show("slow");

运行该代码后,元素将在600毫秒内慢慢的显示出来。其它的速度关键字还有”normal“和”fast“(长度分别是400毫秒和200毫秒)。

不仅如此,还可以为显示速度指定一个数字,单位是毫秒。

例如,使用如下代码使元素在1秒钟(1000毫秒)内显示出来;

$(”element").show(1000);在前面的例子中,把其中的hide()方法改为hide(600),show()方法改为show(600)。

jQuery代码如下:

 代码如下 复制代码

$(function () {
    $("#panel h5.head").toggle(function () {
        $(this).next().hide(600);
    }, function () {
        $(this).next().show(600);
    })
});

从代码的执行过程中,可以发现,hide(600)方法会同时减少“内容”的高度、宽度和不透明度,直至3个属性的值为0,最后设置该元素的CSS规则为“display:none”。

show/hide性能测试

测试数据

用作测试的是一个含有100个div的HTML页面,div带有class和一些内容

用作测试的jQuery版本是1.4.2,所以测试结果也只是针对这个版本,在其他版本可能就不是这些结果了。
测试的jQuery方法分别是:

.toggle()
.show() 和 .hide()
.css({'display':'none'}) 和 .css({'display':'block'})
.addClass('hide') 和 .removeClass('hide')

改变<style>元素的一个属性

.show() 和 .hide()

在所有浏览器中,这两个方法在隐藏DOM元素上相对来说比较慢。主要原因在于.hide()方法必须先保存元素的"display"属性,这样.show()才能把元素恢复到原来的状态。这里用到了.data()这个jQuery方法,把信息保存在DOM元素上。为了达到这个目的,.hide()在每个元素上循环了两次,一次用来保存当前的"display"值,一次用来更新样式"display"为"none"。根据源代码上的注释,这样做是为了防止浏览器在每个循环上进行重新渲染(reflow)。.hide()方法还会检查你是否传递了使用动画效果的参数,就算传入一个"0"也会让性能大打折扣。在第一次调用.hide()的时候性能最慢,在之后再调用则会变快。

Browser hide/show
FireFox 3.6 29ms / 10ms
Safari 4.05 6ms / 1ms
Opera 10.10 9ms / 1ms
Chrome 5.0.3 5ms / 1ms
IE 6.0 31ms / 16ms
IE 7.0 15ms / 16ms

.toggle()

这个方法是最慢的。它会检查选择器返回的每一个元素当前是否可见,如果可见的话就调用.hide()方法,不可见则调用.show()方法。不但如此,它不仅会检查你是否传递了一个boolean值进去阻止.hide()或者.show()的执行,还会检查看你是否传入了function来进行切换(toggle)而不是对可见性进行切换。看起来这个方法还有很大的改善空间,例如可以先一次过把隐藏的元素select出来,然后调用.show()方法,同时把其余的元素select出来调用.hide()方法。

Browser hide/show

FireFox 3.6 80ms / 59ms
Safari 4.05 24ms / 30ms
Opera 10.10 67ms / 201ms
Chrome 5.0.3 55ms / 20ms
IE 6.0 296ms / 78ms
IE 7.0 328ms / 47ms

时间: 2024-10-25 07:33:35

jquery show()和hide()让元素动起来的相关文章

Jquery源码分析---DOM元素(下)

5.3.2 insert 在IE中提供了insertAdjacentElement()方法,这个方 法比insertBefore()和appendChild()好用.为了保证兼容性,像 prototype,mootools,Ext都提供了一个类似的方法,之后在扩展出四个方法. 分别在元素的前面或后面,元素的内部开始或内部结束处四个地方插入元素. Jquery也一样,提供了domManip(),这个函数和 insertAdjacentElement类似,不同的是它采用回调函数做swhere的类似参

Jquery源码分析---DOM元素(中)

5.2.2 width&heigth 对于元素的宽度和高度,dom元素提供了 client(clientHeight,clientWidth).offset(offsetHeight,offsetwidth). scroll(srollHeight,srollWidth)三种方式,这三种有什么区别呢? client=content+padding.Offset=content+padding+border.Scroll的宽度和 高度都是没有经过scroll的原始宽度和高度.也就是这个一般会大于现

jquery计算鼠标和指定元素之间距离的方法

  本文实例讲述了jquery计算鼠标和指定元素之间距离的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 (function() { var mX, mY, distance, $distance = $('#distance span'), $element = $('#element'); function calculateDistance(elem, mouseX, mouseY) { return Math.floo

jQuery使用addClass()方法给元素添加多个class样式

 这篇文章主要介绍了jQuery使用addClass()方法给元素添加多个class样式的方法,实例分析了addClass方法的使用技巧及添加多个样式的实现方法,需要的朋友可以参考下     本文实例讲述了jQuery使用addClass()方法给元素添加多个class样式的方法.分享给大家供大家参考.具体如下: jQuery通过addClass()方法给元素添加多个class,只需要在添加的class中用空格分开多个class既可 ? 1 2 3 4 5 6 7 8 9 10 11 12 13

jQuery给多个不同元素添加class样式的方法

 这篇文章主要介绍了jQuery给多个不同元素添加class样式的方法,实例分析了addClass()方法添加样式的技巧,非常具有实用价值,需要的朋友可以参考下     本文实例讲述了jQuery给多个不同元素添加class样式的方法.分享给大家供大家参考.具体分析如下: jQuery可以通过addClass()方法给多个不同的html元素同时添加相同的class ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 2

jQuery使用removeClass方法删除元素指定Class的方法

 这篇文章主要介绍了jQuery使用removeClass方法删除元素指定Class的方法,可实现针对指定元素样式的批量删除功能,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了jQuery使用removeClass方法删除元素指定Class的方法.分享给大家供大家参考.具体分析如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 <!DOC

jQuery使用empty()方法删除元素及其所有子元素的方法

 这篇文章主要介绍了jQuery使用empty()方法删除元素及其所有子元素的方法,涉及jQuery操作元素的技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了jQuery使用empty()方法删除元素及其所有子元素的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 <!DOCTYPE html> <html> <head> &

jQuery使用after()方法在元素后面添加多项内容的方法

 这篇文章主要介绍了jQuery使用after()方法在元素后面添加多项内容的方法,实例分析了jQuery中after方法的功能及在元素后面添加内容的技巧,非常具有实用价值,需要的朋友可以参考下     本文实例讲述了jQuery使用after()方法在元素后面添加多项内容的方法.分享给大家供大家参考.具体分析如下: jQuery可通过after()方法在元素后面添加多项内容,after()可以带多个参数,在指定元素后面添加多项内容 ? 1 2 3 4 5 6 7 8 9 10 11 12 13

jQuery使用append在html元素后同时添加多项内容的方法

 这篇文章主要介绍了jQuery使用append在html元素后同时添加多项内容的方法,实例分析了jQuery中append追加内容的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了jQuery使用append在html元素后同时添加多项内容的方法.分享给大家供大家参考.具体分析如下: 下面的代码可以同时在文本段落后添加多项内容 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 <!DOCTYPE html