mouseenter为什么不用事件冒泡?

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

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

编辑

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

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

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

阅读 3.7k
2 个回答

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

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题