为什么要缓存 jQuery 对象?

2023-11-22

那么为什么我们要缓存 jQuery 对象呢?

在以下场景中:

var foo = $('#bar');
foo.attr('style','cool');
foo.attr('width','123');

$('#bar').attr('style','cool'); $('#bar').attr('width','123');

为什么第一个选项比第二个选项好得多?

如果是因为性能原因,那么它是如何减少使用量的呢?


因为 jQuery 函数中有很多代码,如果使用相同的输入并期望相同的输出多次执行它,则会产生不必要的开销。通过缓存结果,您可以存储对要查找的确切元素或元素集的引用,这样您就不必再次搜索整个 DOM(即使是相当快的搜索)。在许多情况下(具有少量代码的简单页面),您不会注意到差异,但在您这样做的情况下,可能会产生很大的差异。

您可以通过以下方式查看此操作的实际效果在 jsPerf 中测试您的示例.

您也可以将其视为以下示例引入解释变量出于可读性目的而重构模式,特别是对于比问题中的示例更复杂的示例。

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

为什么要缓存 jQuery 对象? 的相关文章

  • 我可以使用 jQuery 的 AJAX 将表单信息提交到 Google Spreadsheets 吗?

    我喜欢能够使用谷歌电子表格 但以视觉方式集成到我的网站中很棘手 所以我想我会重新创建他们的表单 一个简单的剪切 粘贴 通过 AJAX 提交表单 数据将转到电子表格 我可以将我的用户重定向到比谷歌默认的 谢谢你所做的一切 更漂亮的东西你刚刚做
  • 为某个时刻添加持续时间 (moment.js)

    时刻版本 2 0 0 阅读文档后 http momentjs com docs manipulating add 我认为这很简单 Chrome 控制台 var timestring1 2013 05 09T00 00 00Z var tim
  • 公开闭包内的方法

    当我们在闭包内创建一个方法时 该方法将成为该闭包的私有方法 并且在我们以某种方式公开它之前无法访问它 怎么可能暴露呢 您可以返回对它的引用 var a function var b function I m private alert go
  • 在 jQuery 选择器上使用正则表达式查找基于 ids 的所有元素

    我有几个具有唯一 id 的元素 如下所示 div div div div div div 我希望使用 jQuery 可以实现以下功能 item top each function this hide 我对正则表达式没有很好的掌握 希望得到一
  • C# 编译器不会优化不必要的强制转换

    前几天 在写答案的时候这个问题 https stackoverflow com questions 2208315 why is any slower than contains在这里 关于溢出 我对 C 编译器感到有点惊讶 它没有按照我的
  • 如何在数据表角度中基于 JSON 动态填充表值?

    我在用着Angular 数据表 https l lin github io angular datatables 我需要能够根据返回的数据动态创建表 换句话说 我不想指定列标题 Example json数据 id 2 city Baltim
  • JS:修改 JS 对象中的值/对

    我正在尝试找出修改对象的最佳方法 而无需三次写出类似的对象 所以我有这三个对象 var object1 start start end end type 1 var object2 start start end end type 2 va
  • select2 验证 - 选择至少一个值

    我在用select2 http ivaynberg github io select2 and jQuery 验证 http jqueryvalidation org 插件 select2 的 HTML div class form gro
  • 如何让php页面从html页面接收ajax post

    我有一个非常简单的表单 其中有一个名字输入字段 我捕获了表单数据 并使用标准 jQuery 发布方法通过 ajax 将其传输到 PHP 页面 但是 我根本无法从 PHP 页面获得任何在服务器端捕获数据的响应 我不确定我做错了什么或缺少什么
  • 如何禁用网页中的萤火虫?

    如何使用 Javascript 禁用 firebug 我想这样做是为了向访问者隐藏我的网页的运作方式 有什么选择可以做到这一点吗 你不能 你能做的最好的事情就是混淆你的 JavaScript 实际上刮掉了 您能做的最好的事情就是将所有安全关
  • jQuery DataTables:隐藏最后一行的“删除”按钮

    我有一个DataTable在某些情况下可以返回多个页面 返回的每一行都显示一个删除按钮 但我需要它在返回的最后一行上隐藏此按钮 无论是 1 pg 还是多个 因此不能在其中使用 CSS 我想学习如何实现这一点 因为DataTables对我来说
  • D3 强制布局,较大的节点聚集在中心

    我一直在修改将用于标签云的强制布局 每个标签都由一个
  • 从 dask 数据框中的日期时间序列获取年份和星期?

    如果我有一个 Pandas 数据框和一个日期时间类型的列 我可以按如下方式获取年份 df year df date dt year 对于 dask 数据框 这是行不通的 如果我先计算 像这样 df year df date compute
  • 如何计算一行中Flexbox项目的数量?

    网格是使用 CSS flexbox 实现的 Example http jsbin com jumosicasi edit html css js output 本示例中的行数为 4 因为我出于演示目的固定了容器宽度 但是 实际上 它可以根据
  • jQuery UI 对话框 - 关闭后无法打开

    我有一个问题jquery ui dialog box https jqueryui com dialog 问题是 当我关闭对话框然后单击触发它的链接时 除非刷新页面 否则它不会再次弹出 如何在不刷新实际页面的情况下回调对话框 下面是我的代码
  • 从json中获取所有子节点

    我有以下 json var source k 01 k 02 children k 05 k 06 children k ABC k PQR k 07 k 03 我希望能够指定 k 的值并取回所有孩子 以及孙
  • 突出显示单词并提取其附近文本的函数

    我有一个文本例如 Etiam porta semmalesuada magna mollis euismod 整数取数 ante venenatis dapibus posuere velit aliquet 埃蒂亚姆 门塔 塞姆 male
  • 拉斐尔路径交叉点不起作用

    我对拉斐尔和 pathIntersection method JSFiddle 示例 http jsfiddle net t6gWt 2 您可以看到有两条线都与曲线相交 但当我使用 pathIntersection method 有一个未解
  • 在引导程序中以编程方式更改选项卡窗格选项卡

    我使用的选项卡窗格定义为 ul class nav nav tabs li a href personal Personal Information a li li class active a href contact Contact a
  • 使用 numpy 加速 for 循环

    下一个 for 循环如何使用 numpy 获得加速 我想这里可以使用一些奇特的索引技巧 但我不知道是哪一个 这里可以使用 einsum 吗 a 0 for i in range len b a numpy mean C d e f b i

随机推荐

  • 雪花中的断言

    有没有办法在 Snowflake 中执行断言 基本上 我正在尝试做一些测试 TDD 并且我想要一种类似于其他语言中的断言的机制 如果断言成功 则返回 true 和 或打印成功消息 如果断言失败 则会引发异常 我找不到任何在 Snowflak
  • PowerShell 无法识别 Java

    我在 Windows 2012 服务器上使用 PowerShell 并从 System32 中删除了所有 java 命令 重新安装了 jdk 将 JAVA HOME 和 Path 设置为指向新安装 我仍然收到以下错误 java The te
  • 如何知道设备的密度?

    我们可以在android中获取分辨率 但是我们如何知道设备 屏幕 的密度呢 thanks 执行以下代码 float scale getApplicationContext getResources getDisplayMetrics den
  • SQL - SELECT MAX() 和附带字段

    我所遇到的基本上是一个可以用多个表轻松解决的问题 但我只有一个表来完成它 考虑以下数据库表 UserID UserName EmailAddress Source 3K3S9 Ben email protected user SF13F H
  • android 中的椭圆是什么意思?

    我添加了一个EditText到我的布局 并添加了一个提示 并使其水平居中 运行应用程序时 提示是不可见的 我发现我应该做ellipsize的值TextView to be start
  • qemu-system-x86_64 :地址解析失败 ::1:46189:名称或服务未知

    我有以下问题 当我跑步时emulator avdname抛出以下错误 qemu system x86 64 chardev socket port 46189 host 1 nowait nodelay ipv6 id modem addr
  • 应用程序传输安全策略要求使用安全连接 - IOS 9

    我在使用 IP 地址连接 API 时遇到问题 即使我将以下代码添加到 plist 它仍然显示错误 如下所示 http xx3 xx xx8 xx7 xxx xxx 错误 无法加载资源 因为应用程序传输安全策略需要使用安全连接 这是我添加到
  • 获取特定用户的 CVS 历史记录

    如何获取特定用户对存储库所做的提交历史记录 我可以通过命令行或 TortoiseCVS 访问 CVS 因此使用任一方法的解决方案就足够了 作为一名编码员 我最感兴趣的是提交更改 而不是标记 分支等 因此我通常包括 c还有提交选项 cvs h
  • “ng-select”不是已知元素

    这是我的代码 我想在我的表格上添加https github com ng select ng select多选标签输入 组件 模块 ts import NgModule from angular core import CommonModu
  • 运行 shell 脚本时如何在 Jenkins 中标记构建不稳定

    在我正在进行的一个项目中 我们使用 shell 脚本来执行不同的任务 有些是运行 rsync 的 sh bash 脚本 有些是 PHP 脚本 PHP 脚本之一正在运行一些集成测试 这些测试输出到 JUnit XML 代码覆盖率报告等 詹金斯
  • meteorJS 从服务器调用 shell 命令

    我正在使用 MeteorJS 我想从 javascript 服务器端调用 bash 命令 这对于 NodeJS 来说似乎是可能的 http www dzone com snippets execute unix command nodejs
  • 获取多选中最后单击的选项

    在页面上 我有一个包含许多选项的选择 多个 框 现在我想对最后单击的项目做出反应 以使用 ajax 显示一些数据 由于选项元素上的 click 事件在 IE 中不起作用 我目前使用 change 事件 问题是 value 和 selecte
  • 如何使用 jQuery 在单击按钮时显示表格的另外 5 行

    我预加载了一个表及其所有行 但是 我只想显示其中的前 10 行 tbody 标签 现在每个 tr 在表中 这是我到目前为止所做的 var trs internalActivities gt table gt tbody gt tr trs
  • 骆驼、JMS、CLIENT_ACKNOWLEDGE 模式

    我知道Camel的JMS组件用于接收消息 使用Springs DefaultMessageListenerContainer 可以将其配置为使用 CLIENT ACKNOWLEDGE 模式来确认消息 我的问题是 什么时候调用 message
  • 从 PhpStorm 2017.1 检索保存(隐藏)的 SSH 密码

    我忘记了远程服务器的 SSH 密码 但它以隐藏方式保存在 IDE PhpStorm 2017 1 中 有什么办法可以查看隐藏密码吗 我终于可以从 PhpStorm 2017 1 检索密码 Go to 设置 首选项 外观与行为 系统设置 密码
  • PHP MySQLi multi_query 准备好的语句

    我想知道是否可以为 MySQLi multi query 准备多个语句 No mysqli multi query采用查询字符串作为其参数 而不是准备好的语句 mysql prepare只能准备一个语句 查询必须由单个 SQL 语句组成
  • 将 API 函数包装在 RxJs Observable 中

    我是 RxJs 的新手 我有一个用于地理编码的 API 它提供了如下所示的功能 simpleGeocode options where options address addr success Function failure Functi
  • ro.sf.lcd_密度必须定义为构建属性

    在模拟器上运行应用程序时 我遇到了这些错误 我该如何解决这个问题才能使我的程序更加可靠 error 01 16 11 06 49 211 E SurfaceFlinger 37 ro sf lcd density must be defin
  • 用C处理音频wav文件

    我正在处理 wav 文件的幅度并按某个小数因子缩放它 我正在努力思考如何以节省内存的方式读取和重写文件 同时也尝试解决该语言的细微差别 我是 C 语言的新手 该文件可以是 8 位或 16 位格式 我想到这样做的方法是首先阅读标头数据到一些预
  • 为什么要缓存 jQuery 对象?

    那么为什么我们要缓存 jQuery 对象呢 在以下场景中 var foo bar foo attr style cool foo attr width 123 bar attr style cool bar attr width 123 为