当一个容器,如div,不包含元素时。Onmouseover只执行一次,正常。当这个div包含其他子元素的时候,这个事件就被执行了多次,今天遇到了这个问题,特此记录下,解决方案。
这个是由于onmouseover引起的,主要是因为ul里面包含了子元素,会造出鼠标移动到子元素,比如li上面也会触发ul的onmouseover事件,造成了混乱。解决办法:
1,如果是IE浏览器,用onmouseleave代替。
2,不管什么浏览器,下面这个方法都是牛逼的,不信,你试试。
- stateList.onmouseout = function(e){
- if( !e ) e = window.event;
- var reltg = e.relatedTarget ? e.relatedTarget : e.toElement;
- while( reltg && reltg != this ) reltg = reltg.parentNode;
- if( reltg != this ){
- // 这里å¯ä»¥ç¼–写 onmouseleave 事件çš"å¤"ç†ä»£ç
- stateList.style.display='none';
- }
- }
原文在这里:http://blog.csdn.net/teresa502/article/details/6103458