大型列表上单击事件的 jQuery 委托性能 - 如果动态添加更多元素,速度会变慢?

2024-01-12

我有一个像这样的项目的可视列表:

http://jsfiddle.net/viatropos/XCe3T/1/ http://jsfiddle.net/viatropos/XCe3T/1/

在真实的应用程序中,我总共只加载 200 个项目。但问题是click即使只有 200 个项目,事件也需要几乎一秒钟的时间来调用处理程序。这mouseover无论列表中有多少项,事件回调都会立即执行。

我的问题是,无论页面上有多少元素,委托方法不应该一样快吗?我所做的就是这样:

$("body").delegate("a", "click", function(event) { console.log($(event.target).get(0)); return false; }

如果您转到上面的 jsfiddle 示例和 Web 检查器,然后单击渲染结果中的链接,它将添加 200 个以上元素。请注意添加的元素越多,速度就越慢。奇怪的是,如果您从 6000 个项目开始,委托/单击的执行速度比您从 2000 个项目开始并一次添加 200 个直到达到 6000 个要快得多。

你的想法是什么,我如何提高 jQuery 的性能delegate方法为click事件? css 是否会导致速度变慢(可能样式太多或布局未优化)?


根据我的经验,重新初始化(取消绑定然后再次绑定事件处理程序)比使用 .live 或 .delegate 更好(性能方面)。 这样您就应该获得所需的性能。 实际上,我会定义一个委托变慢的阈值,删除所有绑定并将事件处理程序重新绑定到现有的元素集。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

大型列表上单击事件的 jQuery 委托性能 - 如果动态添加更多元素,速度会变慢? 的相关文章

随机推荐

  • 代码点火器 count_all_results

    我正在使用最新的codeIgniter已发布 我也在与jquery datatables from datatables net 我写了这个函数 https gist github com 4478424 https gist github
  • 路径存在的 MVC 路由

    我正在尝试创建一条路线 为网址添加标题 例如 http mysite com tech 但我的站点下还有一个实际目录 tech 其中包含其他静态资源 不是我的设计选择 但我正在将旧站点迁移到 mvc 并且不想破坏一堆非常旧的链接 我的路线似
  • t.replace 不是一个函数(…)trim

    当我签入 console log 并打破它时 以下内容在问题中产生错误 var map L map map setView 0 0 2 Now this should look something like Australia 2006 2
  • 用于匹配多语言号码的正则表达式不检测中文号码

    我有一个方法可以检测字符串是否是数字 public static boolean isNumber String num return num matches p N 上述方法可以成功匹配英文 印地文 阿拉伯数字 但无法匹配中文数字 三万零
  • javascript中将数组拼接成数组的更好方法

    有没有比这更好的方法在javascript中将一个数组拼接到另一个数组中 var string theArray splice start number newItemsArray join eval string 您可以使用apply h
  • Pandas:将日期划分为 30 分钟间隔并计算平均值

    我有一个带有两列的 Pandas 数据框 它们是speed and time speed date 54 72 1 33 56 49 37 1 33 59 37 03 1 34 03 24 02 7 39 58 28 02 7 40 01
  • python heapq 合并的内部工作。如何在不生成列表的情况下对列表进行排序

    如何heapq merge 即使不生成列表也可以对列表进行排序 不确定我说清楚了没有 所以 这是从leetcode 的超级丑数问题 https leetcode com problems super ugly number 和这个Pytho
  • 涉及动态字段的数据库结构

    我正在做一个项目 它主要是为了学习目的 我发现实际上尝试一个复杂的项目是掌握基础知识后学习语言的最佳方法 数据库设计不是强项 我开始阅读它 但它还处于早期阶段 我仍在学习 这是我的 alpha 模式 我真的只是想记下我能想到的所有内容 看看
  • 通过 IMAP 添加自定义 RFC822 标头?

    有没有一种简单的方法可以使用 imaplib 将自定义 RFC822 标头添加到 IMAP 服务器上的邮件中 我正在编写一个基于 python 的程序来过滤我的 IMAP 邮件存储 当我使用 Procmail 执行此操作时 我可以选择添加标
  • 如何在 ASP.NET MVC 身份上设置自定义身份验证?

    我需要的 我有一个 ASP NET 身份系统设置并使用外部登录运行 无论出于何种原因 我需要在 ASP NET 身份验证之后设置自定义身份验证 让我解释一下如何 假设我有三个页面供用户在我的应用程序上查看 页面 A B C 谁可以查看页面
  • docker-compose - ADD 失败:构建上下文之外的禁止路径

    我有这样的文件夹结构 project config docker Dockerfile docker compose yml src here is code requirements txt Dockerfile FROM python
  • React:TypeError:尝试使用react-bootstrap容器时无法读取null的属性(读取'useContext')

    正如标题中所述 我正在尝试创建一个布局组件 但使用任何react bootstrap组件似乎都会给我错误 在这种情况下 使用我收到错误 类型错误 无法读取 null 的属性 读取 useContext 该布局组件的代码如下 import R
  • awk中的浮点计算

    我对以下行为感到惊讶awk表演时浮点计算 这导致我对表数据的计算错误 awk BEGIN print 2 3 0 1 23 lt Ok awk BEGIN print int 2 3 0 1 22 lt Wrong awk BEGIN pr
  • 使用 NSLocalizedString 的最佳实践

    我 像所有其他人一样 使用NSLocalizedString本地化我的应用程序 不幸的是 有几个 缺点 不一定是 NSLocalizedString 本身的错误 包括 Xcode 中的字符串没有自动补全功能 这使得工作不仅容易出错 而且令人
  • Java找不到主类

    我编写了以下 Java 源文件 Hello java package com public class Hello public static void main String args System out println Hello 我
  • Int32.ToString() 是否特定于区域性?

    我正在运行 ReSharper 的 Beta 版本 它向我发出以下代码的警告 int id DoSomethingWith id ToString 警告位于id ToString 调用 它告诉我 明确指定字符串转换中的区域性 我理解这个警告
  • Tomcat 5.5 中的永久 301 重定向

    是否可以使用独立运行的 Tomcat 5 5 而不是在 IIS Apache 后面 进行 301 重定向 没有一种方法可以像使用 Apache 那样轻松地进行设置 最接近的方法是创建一个 servlet 或 jsp 来处理重定向 然后将其映
  • 时间间隔的 NSPredicate

    我有一张表 其中有 4 个字段 开始日期 结束日期 开始时间和结束时间 我需要设置谓词类似 if startdate lt currentdate and currentdate lt enddate if starttime lt cur
  • 如何在 Xcode 4.4 中将部署目标从 iOS 5.1 更改为 4.2

    我试图在 Xcode 4 4 中将部署目标从 5 1 更改为 4 2 但它不起作用 我下载了 4 1 4 2 的调试支持 我将架构设置为armv6 armv7 我在plist中设置了armv6 armv7 我不使用故事板 It s a 已知
  • 大型列表上单击事件的 jQuery 委托性能 - 如果动态添加更多元素,速度会变慢?

    我有一个像这样的项目的可视列表 http jsfiddle net viatropos XCe3T 1 http jsfiddle net viatropos XCe3T 1 在真实的应用程序中 我总共只加载 200 个项目 但问题是cli