jQuery hide()并不等于hide(0)

在实际使用中,经常用hide()函数来隐藏HTML元素,通常是没有什么问题的,但在一次做二级下拉菜单时遇到了问题,后来才发现有时候“speed”是不能省略的,即使“speed=0”,也就是说hide()在某些时候并不等于hide(0),下面拿实例来证明:

在做一个网站的二级下拉导航,设计了一个简单的jQuery,代码如下:

<script type="text/javascript">
jQuery(document).ready(function($) {
$('#nav li').hover(function() {
$('.sub', this).slideDown(300);
},function() {
$('.sub',this).hide();
});
});
</script>

测试了一下效果不错,但是发现如果鼠标运动太快的话,下拉菜单将无法隐藏,出现多个下拉菜单同时显示的情况,看来hide()失效了?后经多次修改发现,只要添加speed参数就能正常。
speed用来设定隐藏的速度,数值越小隐藏速度越快,当需要立即隐藏时,speed可以设置为0,在平时的应用中我们会将0省略掉,但是在这个例子中我 将speed取值500、300、50、0,程序均能取得满意效果,但是省掉speed后就出现失效的情况,说明在某些情况下speed是不能省略 的,hide()并不等于hide(0)!
当然在这个例子中也可以用slideUp()来代替hide(),在函数slideUp(speed)中参数speed是可以省略的。

<script type="text/javascript">
jQuery(document).ready(function($) {
$('#nav li').hover(function() {
$('.sub', this).slideDown(300);
},function() {
$('.sub',this).slideUp();
});
});
</script>

原文地址:https://www.cnblogs.com/tnnyang/p/4238550.html