解决鼠标移入子元素触发父元素的mouseout事件
方法一、 用mouseleave/mouseenter代替mouseover/mouseout【最佳方法】
mouseover 与 mouseenter:
mouseover => 不论鼠标指针穿过被选元素或其子元素,都会触发 mouseover
事件。
mouseenter => 只有在鼠标指针从元素外穿入被选元素(到元素内)时,才会触发
mouseenter 事件。
mouseout 与 mouseleave:
mouseout => 不论鼠标指针离开被选元素还是任何子元素,都会触发 mouseout
事件。
mouseleave => 只有在鼠标指针从元素内穿出被选元素(到元素外)时,才会触发
mouseleave 事件。
方法二、利用e.stopPropagation()阻止事件进一步传播
e.stopPropagation()会终止事件在传播过程的捕获、目标处理或起泡阶段进一步传播。调用该方法后,该节点上处理该事件的处理程序将被调用,事件不再被分派到其他节点。
这里要阻止移入子元素触发父元素的mouseout事件,需要在捕获阶段中止冒泡,示例代码如下:
父元素.addEventListener(‘onmouseout’, function(e){
e.stopPropagation();
this.innerHTML = ‘’;
}, true);
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!