InvalidArgumentException: Message: Expected 'id' mouse to be mapped to InputState whose subtype is undefined, got: pointerMove
1条回答 默认 最新
- 无限虚空 2024-06-18 13:14关注
mouseover和mouseout引发的BUG原由
当给一个元素添加mouseover或mouseout事件,这个元素还有子元素。由于子元素的事件冒泡,鼠标移入或移出子元素都会触发事件。
解决的方法:根据event对象判断是否为子元素
JQuery解决方法
JQuery可以用mouseenter代替mouseover,mouseleave代替mouseout。还可以用hover()方法。
JavaScript原生解决方法
原生的方法解决就需要了解一下relatedTarget、fromElement、toElement这三个event返回的对象。relatedTarget是w3c标准的ie没有/fromElement在ie时mouseover使用/toElement在ie时mouseout上使用
写一下简单的思路:
鼠标移入的时候判断一下:移入的元素既不是本身,也不是元素的子节点,然后触发事件。
写了两个方法:
relatedTarget() //返回相关元素的节点
checkFather(obj,relatedTarget) //判断移入的元素既不是本身 也不是元素的子节点
在发个示例:
解决 无用评论 打赏 举报