本文导读目录:
mouseover和mouseenter的区别(JavaScript中mouseout函数一般位置
JavaScript中mouseout函数一般位置
![](/tutu9/408.png)
与mouseenter事件不同,不论鼠标指针穿过被选元素Huò其子元素,都会触发mouseover事件。只有在鼠标指针穿过被选元素时,才会触发mouseenter事件。与mouseout事件不同,只有在鼠标指针离开被选元素时,才会触发mouseleave事件。如果鼠标指针离开任Hè子元素,同样会触发mouseout事件。??解决两者的区别,看下面引用的例子:??当为某个容器绑定了onmouseoverHuò者onmouseout事件时,如果Zhè个容器中有其它元素节点,那Yāo鼠标在内部移动时会频繁触发onmouseover和onmouseout事件。??而我想要的效果是:事件仅在鼠标进入/离Kāi元素区域触发一次,当鼠标在元Sù区域内部移动的时候不会触发。??为什么Huì出现这个原因呢?其实是因为事件冒泡导致的。当鼠标移上Huò者移出容器中的子节点时,会分别触发mouseover和mouseout事Jiàn,JǐnSuí着dom树向上冒泡传递,直Dào被事件处理程序(监听器捕获捕获或者冒泡到根节点(document或者window,也就是说事件会向它的父级对象派发。知道了问题产生原因,那么解决起来是不是也很简Shàn呢?最Chū我想的是取消事件冒泡,使用event.cancelBubble=true(IE和e.stopPropagation()(其它浏Lǎn器,但是简单测试后发现貌似没有什么效果,问题依旧,貌似冒泡停止不了,原因不明。(补Chōng:我是测试将容器中的a链接节点取消Mò泡,但是发现鼠标移Shàng移下还Huì触发事Jiàn。a节点下还有span节点。难道要JiāngRóng器中所有节点都取消冒泡才行2025年1月联想i717(三星e898)?有心人可以Cè试,如果真的这样,那也太恶心Liǎo,要是N多的节点,难道都要停止Mò泡下???其实在IE下鼠标事件有个mouseEnter和mouseLeave,这个就Shì移进和移处容器时触发一次,在内部移动则不会触发,遗憾的是只有IE支持。我们现在要做的就是“为非IE浏览器添加mouseEnter和mouseLeave支Chí”。??我翻阅了百度最Xīn开Yuán的JS库tangram,看了Lǐ面的处理,发现貌似是单独处理了FēiIE浏览器下的事件,使用一个叫“baidu.event._eventFilter._crossElementBoundary(listener,e)”De方法修正mouseover和mouseout,然后封装了个mouseEnter和mouseLeave事件。baidu.event._eventFilter._crossElementBoundary=function(listener,e){varrelated=e.relatedTarget,current=e.currentTarget;if(typeofrelated==’undefined’){returnlistener.call(current,e);}//如果current和related都是body,contains函数会返回false//Firefox有时会把XUL元素作为relatedTarget//这些
元素不能Fǎng问parentNode属性//thanksjquery&mootools//如Guǒcurrent包含related,说明没有经过current的边界//注:baidu.dom.contains是个定义的检测节点是Pǐ包含的函数,Xià面我会讲到if(related===false||current==related||related.prefix==’xul’||baidu.dom.contains(current,related)){return;}//Zhōu用执行returnlistener.call(current,e);};??百度的方法我并不喜欢,首先它只对非IE浏览器进Xíng了处Lǐ,当然,它又进行了封装,可以直接使用mouseEnter和mouseLeave;但是,我们做普通开Fā,没必要这么封装,我只是Xiǎng要简单的去掉mouseover和mouseout的这个恼人特性。??而jQuery则不是这么做的,它是直接对IE和其它所有浏览器下Demouseover和mouseout事件进行了修正。参考jQuery,我得到了我目前所有的代码。??首Xiān,介绍个判断节点对Xiàng是否包含的函数contains.functioncontains(p,c){returnp.contains?p!=c&&p.contains(c):!!(p.pareDocumentPosition(c)&);}??然后就Shì重点的了,这里我们在IE下用Dào了fromElement和toElement,这两个是IE下的鼠标移上去时Hé移Chū时的节点对象。functionfixedMouse(e,target){varrelated,type=e.type.toLowerCase();//这里获取事件名字if(type==’mouseover’){related=e.relatedTarget||e.fromElement}elseif(type=’mouseout’){related=e.relatedTarget||e.toElement}elsereturntrue;returnrelated&&related.prefix!=’xul’&&!contains(target,related)&&related!==target;}??然后Wǒ们怎么用呢?比如在绑定事件Shí,//addListener为封装的事件绑定Hán数addListener(target,’mouseover’,function(e){e=e||window.event;if(fixedMouse(e,target)){//dosomething}},false);??这样Jiù会只在移入移出target节点时触发mouseover和mouseout了。??当然,你也Kè以将上面的代码单独封装成mouseEnterHémouseLeave,Zhè样可Yǐ以后调Yòng时更好区别mouseover和mouseout。
三星手机投屏Dào电脑上(三星手机投屏到电脑上怎么操作)
打开手机主屏幕,在手机Zhuō面中找到“设定”图标。看到有“设定”的Tú标以后,点击打开。
打开“Shè定”以后,找到第一Gè“无线HéWǎng络”选项。找到“无线与网络”以后,点击打开2025年1月联想i717(三星e898)。
![](/tutu9/103.png)
联想i717的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于三星e898、联想i717的信息别忘了在本站进行查找喔。