jquery 绑定事件 - mouseover() mouseout() mouseenter() mouseleave() hover()

事件函数列表

blur() 元素失去焦点
focus() 元素获得焦点
click() 鼠标单击
mouseover() 鼠标进入(进入子元素也触发)
mouseout() 鼠标离开(离开子元素也触发)
mouseenter() 鼠标进入(进入子元素不触发)
mouseleave() 鼠标离开(离开子元素不触发)
hover() 同时为mouseenter和mouseleave事件指定处理函数
ready() DOM加载完成
resize() 浏览器窗口的大小发生改变
scroll() 滚动条的位置发生变化
submit() 用户递交表单

mouseover() 鼠标进入(进入子元素也触发)

简单来说,可以看到括号写了进入子元素也触发,这是什么意思呢?

写一个简单的两个嵌套div来演示一下看看,如下:

13423234-83a493ac2b24651c.png
13423234-f6361def434f663c.png

进入子元素也会触发mouseover()事件,那么如果#smalldiv没有嵌套在里面是否会触发呢?
这样应该就不会。

13423234-53b260cfab886df8.png

这样就像是类似事件冒泡,不过是子元素将mouseover()传递冒泡给父元素,就算子元素没在#big里面,也会触发这个事件。

mouseout() 鼠标离开(离开子元素也触发)

上面看了mouseover() 是鼠标进入的事件,那么下面来看看这个事件离开的事件。

13423234-aed6d3113d520a08.png
13423234-2fc2fad091ff564f.png

果然,这个子元素也是会触发mouseout()事件的。

mouseenter() 鼠标进入(进入子元素不触发)

上面两个事件都是具备事件冒泡的特性,看看这个有没有,如下:

13423234-b125eec404595d72.png
13423234-53de9e03db4aa422.png

测试发现,mouseenter()这个事件,移动到子元素#small div也是会被触发的。
那么如果重叠起来,子元素进入会不会触发呢?

13423234-9b5d2d9c94543b3e.png

当子元素在父元素内部的时候,mouseenter()就只会触发一次而已。也就是刚刚进入父元素#big div的时候触发,再进入#small div的时候就不会触发了。

mouseleave() 鼠标离开(离开子元素不触发)

相信这个mouseleave()也是一样的特性,跟mouseenter()差不多才对,下面来看看。

13423234-49b812ea96fc3ce1.png
13423234-a0de491a94e4b685.png

当两个元素嵌套在一起的时候,只有父元素触发了事件。
下面来看看不在一起的时候。

13423234-072160d4cbc6e633.png
13423234-e78a2566b4ccd692.png

可以看到,#small div会将事件冒泡给#big div,导致触发mouseleave()事件。如果想要阻止呢?

可以写一个#small div执行return false;拦截事件冒泡,如下:

13423234-996fca8be6f28cb9.png

hover() 同时为mouseenter和mouseleave事件指定处理函数

这个hover()方法其实就是mouseenter()mouseleave()的合并方法,如下:

13423234-9394563cd90e97ad.png
13423234-14eff73f4e07ca13.png

当鼠标进入和移出的时候,都会触发hover()事件。

13423234-0e3934319aa622f6.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海洋的渔夫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值