jq:mouseover和mouseout多次触发解决办法

Posted 蚂蚁Zz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jq:mouseover和mouseout多次触发解决办法相关的知识,希望对你有一定的参考价值。

区别:

mouseover与mouseenter

  不论鼠标指针穿过被选元素或其子元素,都会触发 mouseover 事件。

  只有在鼠标指针穿过被选元素时,才会触发 mouseenter 事件。

mouseout与mouseleave

  不论鼠标指针离开被选元素还是任何子元素,都会触发 mouseout 事件。

  只有在鼠标指针离开被选元素时,才会触发 mouseleave 事件。

 

在#a没有子元素的情况下,两者在效果上没有区别

但是#a有子元素的情况下,为了mouseovermouseout触发的此时就可能比mouseenter,mouseleave多

$("#a").mouseover(function(){ $(this).children().slideDown(1000); }).mouseout(function(){ $(this).children().slideUpt(1000); });

$("#a").mouseenter(function(){ $(this).children().slideDown(1000); }).mouseleave(function(){ $(this).children().slideUp(1000); });

 

而slideUp是个过程需要时间,但是mouseout,mouseover,mouseenter,mouseleave事件都是瞬间发生,多次触发会产生动画重复,这个可以用jq的stop方法阻止动画。

$("#a").mouseenter(function(){ $(this).children().stop().slideDown(1000); }).mouseleave(function(){ $(this).children().stop().slideUp(1000); });

 

 

jquery stop:

//语法结构

$("#div").stop();//停止当前动画,继续下一个动画
$("#div").stop(true);//清除元素的所有动画
$("#div").stop(false, true);//让当前动画直接到达末状态 ,继续下一个动画
$("#div").stop(true, true);//清除元素的所有动画,让当前动画直接到达末状态

 

以上是关于jq:mouseover和mouseout多次触发解决办法的主要内容,如果未能解决你的问题,请参考以下文章

jQuery mouseove和mouseout事件不断触发

鼠标移动太快时不会触发 Mouseover 和 mouseout 事件?

如何防止鼠标移出移入子元素触发mouseout和mouseover事件

超过孩子时触发 JavaScript mouseout

如何解决鼠标移动到子元素 会触发父元素的mouseout事件

mouseover 与 mouseout 使用时闪烁问题