【发布时间】:2012-09-17 21:17:41
【问题描述】:
我有一个如下的浏览器树。每个节点都是一个具有单独 id 的 div 元素。当鼠标悬停在节点上时,我想更改样式。并在用户左键单击或右键单击节点时执行某些操作。
问题 1:一些文档说 :hover 选择器存在性能问题。所以我改为监听 mouseover 和 mouseout 事件。推荐这种方式吗?
为了实现我的要求,我想监听每个节点的 mouseover、mouseout、click 和 contextmenu 事件。我有两个解决方案。第一个是将事件处理程序绑定到每个节点。第二个是仅将事件处理程序绑定到根节点。当事件冒泡到根节点时,将调用处理程序。
问题 2:两种解决方案哪个性能更好?
【问题讨论】:
-
为什么要用JS设置悬停效果?这不是 CSS 的任务吗,它没有任何性能问题(至少在不使用多个转换的情况下不会)。
-
建议“避免为 IE 客户端的非链接元素使用 :hover 伪选择器”。从此处复制 (developers.google.com/speed/docs/best-practices/rendering)。
标签: javascript html performance dom dom-events