教程集 www.jiaochengji.com
教程集 >  jQuery  >  jquery 教程  >  正文 jquery中使用slideDown和slideUp做二级菜单思路解决

jquery中使用slideDown和slideUp做二级菜单思路解决

发布时间:2016-09-02   编辑:jiaochengji.com
教程集为您提供jquery中使用slideDown和slideUp做二级菜单思路解决等资源,欢迎您收藏本站,我们将为您提供最新的jquery中使用slideDown和slideUp做二级菜单思路解决资源

最近很郁闷,因为我在使用jquery下拉菜单的时候使用到了() 和();下面是我的

<div>
  <ul>
    <li> <a href="">Home</a>
      <ul>
        <li> <a href="">page01</a> </li>
        <li> <a href="">page02</a> </li>
        <li> <a href="">page03</a> </li>
      </ul>
    </li>
  </ul>
</div>
<script type="text/javascript">
$(function(){
$(".menu ul li").hover(

function(){
$(this).find("ul").stop().slideDown();
},function(){
$(this).find("ul").stop().slideUp();
}
)
})
</script>

slideDown(speed,callback);

当鼠标迅速移上去,迅速移开,然后就会发现,下来菜单逐渐消失,最后移上去的时甚至是不显示了。我一直不明白这个怎么解决。

后来搜索相关关键词才发现了一篇文章的评论里面的做法。

发现原来是我的语法用错了,思路是正确的。

只要将里面的第一个stop()改为stop(true,true).第二个stop()去掉即可。或者在第二个里面加上stop(true,true),第一个去掉。

或者使用这样子的函数:把第一个stop()改为filter(‘:not(:animated)’).同样的第二个也不需要添加stop().

这里面涉及到的其实就是一个动画的stop();函数

stop() 方法停止当前正在运行的动画。
$(selector).stop(stopAll,goToEnd)
stopAll 可选。规定是否停止被选元素的所有加入队列的动画。
goToEnd 可选。规定是否允许完成当前的动画。该参数只能在设置了 stopAll 参数时使用。

从上面的stop()可以看出,我们滑过的时候触发了slideDown();那么让他的高度自然完成当前动画,同时停止加进来的动画队列。

今天到此就解决了我一直以来的疑问了,当前使用stop(true,false)、stop(false,true)都是错误的。
完满解决了。

有时候发现不靠谱的时候,特别是在解决bug的时候找到问题,但关键是苦于不能解决的时候,有一种速成的方法在眼前的时候,是不是感激涕零呢?

今天分享另外一个代码,通过延迟出现和停留的时间来解决这个bug,这个代码同时还可以用在下来菜单中二级导航距离比较远的时候的使用。

// 线程 IDs
var mouseover_tid = [];
var mouseout_tid = [];

jQuery(document).ready(function(){
	jQuery('#menus > li').each(function(index){
		jQuery(this).hover(

			// 取消淡出菜单的线程, 延时淡入菜单
			function(){
				var _self = this;
				clearTimeout(mouseout_tid[index]);
				mouseover_tid[index] = setTimeout(function() {
					jQuery(_self).find('ul:eq(0)').fadeIn(200);
				}, 400);
			},

			// 取消淡入菜单的线程, 延时淡出菜单
			function(){
				var _self = this;
				clearTimeout(mouseover_tid[index]);
				mouseout_tid[index] = setTimeout(function() {
					jQuery(_self).find('ul:eq(0)').fadeOut(200);
				}, 400);
			}

		);
	});
});

代码来自

您可能感兴趣的文章:
jquery中使用slideDown和slideUp做二级菜单思路解决
jquery中slideUp()方法与slideDown()方法
Jquery下拉菜单(jquery 下拉菜单插件Sexy Drop Down Menu)
Jquery实现带动画效果的经典二级导航菜单
jQuery ul标签下拉菜单演示代码
用jquery实现下拉菜单效果的代码
Jquery 下拉菜单的实现代码一例
JQuery下的Live方法和$.browser方法使用代码
jquery下拉菜单 ul标签下拉菜单的例子
Jquery+CSS 创建流动导航菜单 Fluid Navigation

[关闭]
~ ~