仿京东防抖动菜单

完整代码:




	
	
	



防抖动

问题:鼠标第一次移入的时候是不需要延迟的,所以加入了mouseFlag

优化后的JS为


$(function(){
	var _catTimer;
	var _mouseflag;
	var $menu = $("#menu");
	var $menuItem = $menu.find(".menu_list").children("li");//菜单
	var $menuCont = $menu.find(".menu_cont");//容器
	var $menuContItem = $menuCont.children("div");//

	$menuCont.hide();//默认隐藏容器窗口

	$menuItem.on("mouseenter", function(){
		var self = $(this);
		if(!_mouseflag){
			showCont(self);
			_mouseflag = true;
		}else{
			_catTimer = setTimeout(function(){
				showCont(self)
			},300)
		}
	}).on("mouseleave", function(){
		if(_catTimer){
			clearTimeout(_catTimer);
		}
	})

	$menu.on("mouseleave",function(){
		$menuCont.hide();
		$menuItem.removeClass("current");
	})

	var showCont = function (self) {
		self.addClass("current");
		self.siblings().removeClass("current");
		$menuCont.show();//显示容器窗口
		var _index = self.index();//获取位置
		$menuContItem.eq(_index).show();
		$menuContItem.eq(_index).siblings().hide();
	}

})



你可能感兴趣的:(原生JS)