Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
3.4k views
in Technique[技术] by (71.8m points)

mouseenter为什么不用事件冒泡?

MDN中说mouseenter鼠标事件不采用冒泡而是向每个层级的元素发送事件,但是如果层级太深的话会有性能问题。

我不明白为什么要这样做,而不使用冒泡,网上搜了下也没搜到什么有用的信息。

编辑

又看了下文档,并在浏览器里试了下,发现mouseenter是触发每个元素自身的mouseenter事件。

例如元素1嵌套了元素2,如果鼠标从外部直接进入元素2,那么分别会触发元素1和元素2自身的mouseenter事件,并且不冒泡。而mouseover只会在元素2上触发,然后冒泡,也就是说只有一个事件。

细想了下似乎多次触发和冒泡可以放到同一类型事件里去,可能是考虑到性能问题、低耦合以及事件的简洁性所以分成了mouseenter和mouseover吧。


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

使用冒泡的事件也有啊, mouseover 啊。

mourseenter 跟它的区别就在于此啊。

正因为有了这个区别,所以 mouseenter 在大小嵌套的元素里鼠标穿过时才不会被反复触发啊。


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...