var addEvent = document.addEventListener ? function(el,type,callback){ el.addEventListener( type, callback, !1 ); } : function(el,type,callback){ el.attachEvent( "on" + type, callback ); } var contains=function(a, b){ //元素a是否包含元素B if (document.compareDocumentPosition) { return !!(a.compareDocumentPosition(b) & 16); } else { return a !== b && (a.contains ? a.contains(b) : true); } } var hover=function(elem,func1,func2){addEvent(elem,"mouseover",function(e){var obj=null; if(window.event){obj=window.event.fromElement;}else{obj=e.relatedTarget;} if(!contains(elem,obj)){console.log("over"); func1();}}) addEvent(elem,"mouseout",function(){var obj=null; if(window.event){obj=window.event.toElement;}else{obj=e.relatedTarget;} if(!contains(elem,obj)){console.log("out"); func2();}})}