如何防止鼠标移出移入子元素触发mouseout和mouseover事件
2018-03-09 11:41
513 查看
<li v-for="item in liveData" :key="item.id" class="live-item" @mouseenter.prevent="onmouseoverItem" @mouseleave.prevent="onmouseoutItem">我想实现的目标:当鼠标进入黑色框时,橙色框执行淡入动画;当黑色框范围移动的时候(即使经过粉色框,动画仍然不被触发);当鼠标移出的时候,橙色方块消失。遇到的问题阐述:当鼠标移入黑色框的时候,橙色框执行淡入动画,但是当鼠标从黑色框经过粉色框的时候,橙色框就消失了,然后又执行一遍淡入动画。当鼠标从粉色框移出到黑色框的时候,橙色框的淡入动画又被执行。这不是我想要的。初期代码:?
首先我们解释一下原因,为什么会出现这些问题。当鼠标从黑色框移到粉色框的时候,此时黑色框的mouseout的被触发,又由于事件冒泡,黑色框的mouseover事件随即被触发,所以实际上,橙色框先消失,然后立即执行淡入动画。这也就是我们看到的过程。当鼠标从粉色框移到黑色框的时候,此时黑色框的mouseout又被触发(因为不论鼠标穿过被选元素或其子元素,都触发 mouseover 事件),同时mouseover也被触发,所以又出现了再次执行淡入效果的过程。方法一:用mouseleave/mouseout代替mouseover/mouseout【最佳方法】先看一下mouseout&mouseover与mouseleave&mouseenter用法上的区别mouseover与mouseenter不论鼠标指针穿过被选元素或其子元素,都会触发 mouseover 事件。
只有在鼠标指针从元素外穿入被选元素(到元素内)时,才会触发 mouseenter 事件。mouseout与mouseleave
不论鼠标指针离开被选元素还是任何子元素,都会触发 mouseout 事件。
只有在鼠标指针从元素内穿出被选元素(到元素外)时,才会触发 mouseleave 事件。可以看一个简单的例子看看二者的区别所以改进的代码可以为?
方法二:利用e.stopPropagation()阻止事件进一步传播e.stopPropagation()会终止事件在传播过程的捕获、目标处理或起泡阶段进一步传播。调用该方法后,该节点上处理该事件的处理程序将被调用,事件不再被分派到其他节点。?
拓展思考:1.如果子元素过多怎么办,难道每个都要去绑定e.stopPropagation()?用jquery的一个选择器.children(),比如$('.parent').children()。获得匹配元素集合中每个元素的子元素。以上所述就是本文的全部内容了,希望大家能够喜欢。
只有在鼠标指针从元素外穿入被选元素(到元素内)时,才会触发 mouseenter 事件。mouseout与mouseleave
不论鼠标指针离开被选元素还是任何子元素,都会触发 mouseout 事件。
只有在鼠标指针从元素内穿出被选元素(到元素外)时,才会触发 mouseleave 事件。可以看一个简单的例子看看二者的区别所以改进的代码可以为?
相关文章推荐
- 如何防止鼠标移出移入子元素触发mouseout和mouseover事件
- 为什么鼠标还没完全移出就触发元素的mouseout事件
- jQuery事件 mouseover方法与mouseout方法实现鼠标移进显示移出消失的效果 (css控制span标签)
- 鼠标经过子元素触发mouseout,mouseover事件的解决方案
- 快速移动鼠标导致js 的mouseover,mouseout,mouseenter,mouseleave等事件(触发动画)反复叠加的处理
- mouseover和mouseout事件在鼠标经过子元素时也会触发
- 鼠标经过子元素触发mouseout,mouseover事件的解决方案
- 经过绑定元素时会多次触发mouseover和mouseout事件
- 相对定位父子元素触发mouseover和mouseout事件实验
- 如何避免鼠标移入子级触发父级的移出事件(两种方法)
- mouseover和mouseout事件在鼠标经过子元素时也会触发
- jquery的鼠标移入移出事件hover、mouseenter、mouseleave、mouseover、mouseout
- 经过绑定元素时会多次触发mouseover和mouseout事件
- title标签替换为浮动框及鼠标所在坐标,mouseover事件延迟触发事件实例
- 如何禁用事件的浮升(div的子元素的点击事件会触发父元素的点击事件)
- 鼠标点击 INPUT 元素后默认触发的事件执行顺序
- mouseover、mouseout防止多次触发
- 如何在JavaScript里防止事件函数的高频触发和调用
- jquery 当DIV有子元素时,mouseover和mouseout事件同时使用时,会产生闪烁的情况
- 鼠标事件mousemove、mouseover、mouseout、mouseenter、mouseleave