今天遇到了这个问题,很是郁闷
jQuery('.side-nav li.level0').mouseover(function(){
jQuery(this).find('ul.level0').addClass('over');
jQuery(this).css({position:"relative","border-top":"1px solid #E4E4E4","border-bottom":"1px solid #E4E4E4"});
});
jQuery('.side-nav li.level0').mouseout(function(){
jQuery(this).find('ul.level0').removeClass('over');
jQuery(this).css({"border-top":"1px solid #FFF","border-bottom":"1px solid #FFF"});
});
这段jquery看似没什么问题,很简单的鼠标事件,但是在ie下会出现闪动,就是使用mouseout时,鼠标只要在容器里一移动,就被出发了hide(),其实是因为mouseout事件也会影响到子元素,也就是事件可能被同时绑定到了该容器的子元素上,所以鼠标移出每个子元素也都会触发hide(),后来我同事改了实现方式
jQuery('.side-nav li.level0').hover(function(){
jQuery(this).find('ul.level0').addClass('over');
jQuery(this).css({position:"relative","border-top":"1px solid #E4E4E4","border-bottom":"1px solid #E4E4E4"});
},function(){
jQuery(this).find('ul.level0').removeClass('over');
jQuery(this).css({position:"static","border-top":"1px solid #FFF","border-bottom":"1px solid #FFF"});
});
这下就ok了,在网上查了下,原来jquery1.4版本后加了mouseleave来替换mouseout,也是可以的
jQuery('.side-nav li.level0').mouseover(function(){
jQuery(this).find('ul.level0').addClass('over');
jQuery(this).css({position:"relative","border-top":"1px solid #E4E4E4","border-bottom":"1px solid #E4E4E4"});
});
jQuery('.side-nav li.level0').mouseleave(function(){
jQuery(this).find('ul.level0').removeClass('over');
jQuery(this).css({"border-top":"1px solid #FFF","border-bottom":"1px solid #FFF"});
});
有的事情真的是遇到了才会知道