Mouseover和Mouseout在IE6下闪烁

归去

公司里开始做一种表格,正常是隐藏的,在鼠标滑动到某个目标上时,就会弹出。不过这里遇到了一个问题,IE6下会开始闪烁,这是因为

$(‘#div’).mouseover(function(e){ $(‘.ershou-pop’).css(‘display’,’block’); }); $(‘#div’).mouseout(function(e){ $(‘.ershou-pop’).css(‘display’,’none’); });

父元素绑定了mouseover和mouseout事件,这个时候,每一个子元素都会在mouseover和mouseout时触发这父元素的事件,于是,每次display:none和display:block就让它闪烁起来了。这个问题在网上查了一下,有两种方案,一个是延时之后判断是不真的要执行mouseover和mouseout,一个是判断目标元素是不是父元素#div的子元素。这里采用第二种方案,下边是一个比较简单的写法。(这种写法在firefox 3.6.2上会出错,因为该版本没有contains函数)

$(‘#div’).mouseover(function(e){ if (!this.contains(e.relateTarget || e.toElement)) … }); $(‘#div’).mouseout(function(e){ if (!this.contains(e.relateTarget || e.toElement)) … });