- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
每当我读到有关 jQuery 中的事件注册的内容时,他们都说我们应该尝试将事件处理程序添加到最近的父级,并避免向文档添加事件监听器,因为根据资源,它们速度缓慢且效率低下。
但是为什么它们很慢?显然这是因为该事件必须冒泡到文档中,这需要时间。然后它将与要调用的选择器列表进行比较,例如
$(document).on("click", ".abc", function(){ })
$(document).on("click", ".abc2", function(){ })
因此,如果我单击一个元素,单击事件将冒泡到文档,然后它将匹配选择器列表(“.abc,.abc2”)......这是低效的。好的,我明白了,但是如果列表中只有一个选择器怎么办?例如
$(document).on("click", "*", function(){ })
会不会很慢?如果是这样为什么?
基本上我正在尝试创建一个谷歌的 jsaction 类似库,所以我会这样写:-
$(document).on("click", "[jsaction]", function(){ })
因为这将是唯一的选择器,所以我认为它不会很慢?或者会是吗?
如果将事件附加到文档效率不高,那么完全的 ajax 应用程序又如何呢?我的应用程序是完全ajax的,每个页面都会通过ajax下载。还有其他更有效的解决方案吗?
最佳答案
事件委托(delegate)基本上使用2个不同的过程,
因此,您通过声明通用选择器来提倡匹配。坦率地说,匹配 2 个或 3 个元素比事件冒泡时遍历文档花费的时间更少。在这种情况下,如果您使用静态最接近父级而不是 document
,遍历时间将会减少,从而提高性能。
虽然匹配所需的时间较少,但当匹配的元素超过 15 个时,即使您使用最接近的父级而不是 document
,也会影响性能。
总而言之,我们必须根据常识谨慎使用事件委托(delegate),因为我们知道上述两个不同的过程是在幕后发生的。
关于javascript - 为什么在 jQuery 中将事件注册到文档是不好的做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36308940/
如果您想分享更多信息,可以在这里找到整个资源 指针: https://github.com/sergiotapia/DreamInCode.Net 基本上,我的API将为其他开发人员提供
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 5 年前。 Improve this qu
我不是 SCM 工具的经验丰富的用户,尽管我确信它们的用处,当然。 我在以前的工作中使用了一些不起眼的商业工具,在当前的工作中使用了 Perforce,并在我的小型个人项目中使用了 TortoiseS
所以我想知道一些我应该避免在 javascript 中做的事情以获得良好的 SEO 排名。在我的下一个站点中,我将广泛使用 jquery 和 javascript,但不想牺牲 SEO。那么您认为我应该
基本上,我想知道什么是避免 future CSS 代码出现问题和混淆的最佳方法... 像这样命名 CSS 属性: div#content ul#navigation div.float-left (真
我是一名优秀的程序员,十分优秀!