当元素数据更改时,jQuery data() 属性不会更新

2023-12-22

我想使用 jQuerydata()api 用于检索元素的所有数据属性。但这个 api 的缓存性质确实很烦人。有时我需要更改 javascript 中元素的某些数据属性,但是data()api 始终返回每个数据属性的初始值。所以我必须使用attr()访问元素的每个数据属性以获取其最新值。有什么办法可以克服这个缓存问题并使data()每次调用时总是返回最新值?


简短的回答是:不要使用 jQuery .data() 动态设置数据属性,除非你能保证数据属性始终由 jQuery 设置.

以下任一解决方案都有效:

  • 使用普通 JS.getAttribute() instead
  • 使用 jQuery.attr() instead

这是jQuery 文档中的相关部分 http://api.jquery.com/data/#data-html5(我认为这并没有真正凸显出这可能会让 jQuery 用户感到多么惊讶):

data- 属性在第一次访问数据属性时被拉取,然后不再被访问或改变(然后所有数据值都存储在 jQuery 内部).

关于为什么你可能not使用 jQuery 设置属性:许多客户端模板语言构建 DOM,包括数据属性。

给定动态构建的 HTML(如 DevTools 中所示:

<form data-test="300" ...

DOM API 说的是实话:

 document.querySelector('form').getAttribute('data-test');

JQuery 返回过时的先前值(在本例中为 19000):

 $('form').data('test');

jQuery attr返回当前值:

 $('form').attr('data-amount');

香草JSgetAttribute()返回当前值:

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

当元素数据更改时,jQuery data() 属性不会更新 的相关文章

  • 如何在 Angular 模板中嵌入 GitHub gist?

    角度忽略script其模板中包含标签 但加载 GitHub gist 需要它们 执行此操作的最佳做 法是什么 使用iframe 创造script动态标记 或者是其他东西 一种方法是创建一个iframe with script里面并在你希望你
  • 如何在Android上获取角度中的按键事件?

    我们如何在 Android 上的 Angular 中获取按键事件及其值 我使用phonegap Cordova Angular JS
  • 从 json 文件加入时添加角色 (autorole)

    我对 JS 相当陌生 为了学习 我决定为 Discord 制作一个机器人 我学到了很多并且正在继续学习 我有一个 autorole 的想法 我知道传统的做法 bot on guildMemberAdd member gt var role
  • jQuery 提交未触发

    我觉得问这个很愚蠢 但为什么我的 submit 没有发出警报 HTML div class buttonbar style margin left 10 div
  • Lodash 和 Underscore.js 之间的差异 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 为什么有人会更喜欢Lodash http lodash com or 下划线 js http underscorejs org 实用程序库优于其
  • 链接到当前页面,无需查询字符串

    我知道做链接有很多技巧 例如 a href query string 附加查询字符串后将链接到当前页面 有没有办法在删除查询字符串后链接回当前页面 而无需仅输入文件名 例如 在页面foo php q 3 我想链接到foo php 有没有快捷
  • 如何用方向键移动div

    我想使用 jQuery 用箭头键移动 div 所以右 左 下 上 找到了我想要完成的演示here http atomicrobotdesign com blog htmlcss move objects around the canvas
  • 如何禁用向左滚动?

    I got a div 元素 parent 包含多个子元素 item 我想启用滚动父元素一个方向 left OR正确的 否则什么都不会发生 看我的代码 parent scroll function gt gt gt scroll event
  • min-height 和 height 属性有什么区别? [复制]

    这个问题在这里已经有答案了 我查了一下这个问题 但无法理解它与我的具体问题的关系 我将有问题的 html 设置如下 div class container fluid div class inner div class weatherdat
  • 在 Jest 测试中设置时刻时区

    我有 util 函数 它以特定的日期格式解析给定的日期 即 2019 01 28 然后使用momentJS检索当天的开始并将其转换为 ISO 日期格式 dates js import moment from moment export co
  • Firestore——仅获取大型同步集合中已更改的文档

    我已阅读下面的所有问题 但在文档中找不到任何内容来描述如何同步集合和接收only更改集合中的文档 我的同步集合中有超过 500 个文档 使用redux saga firebase 同步集合 https redux saga firebase
  • 查找 JavaScript 中函数参数的数量[重复]

    这个问题在这里已经有答案了 可能的重复 获取函数的元数 https stackoverflow com questions 4848149 get a functions arity 假设我有 function a x function b
  • 使用XMLHttpRequest自动网页刷新内存泄漏

    问候 我一直在为一些使用 8 位微控制器的硬件开发网络界面 该网页使用 HTML javascript JSON 和 XHR XMLHttpRequest 进行通信 我想做的是创建一个页面 使用 setInterval 使用控制器中的新值每
  • 将文本数据作为表单中的文件发布

    是否可以从 html 表单中发布一些作为文件输入类型的字符串的 XML 数据 情况是我有一个像这样的表格 form action target php method post enctype multipart form data gt
  • ES6 模板文字可以在运行时替换(或重用)吗?

    tl dr 是否可以制作可重用的模板文字 我一直在尝试使用模板文字 但我想我就是不明白 现在我感到沮丧 我的意思是 我想我明白了 但 它 不应该是它的运作方式 或者它应该如何实现 它应该变得不同 我看到的所有示例 甚至标记模板 都要求 替换
  • 为什么行框之间有空格,而不是由于半行距?

    在下面的代码示例中 您将看到垂直流动的之间有空白spans是 每个之间有空白line box 我想首先声明这与之间的差距无关inline block框 甚至是结果半领先 https www w3 org TR CSS21 visudet h
  • 允许在 Safari 上聊天应用程序使用 audio.play()

    由于苹果禁用了自动播放音频的功能HTMLMedia Element play https developer mozilla org en US docs Web API HTMLMediaElement play在没有用户交互的 java
  • “x modulo y”的结果是什么?

    引用 ECMAScript 规范第 5 2 节 符号 x modulo y y 必须是有限且非零 计算 值 k 与 y 具有相同的符号 或零 使得 abs k 因此 如果 y 为正 则 x modulo y 的结果 k 为正 无论 x 的符
  • 仅使用 javascript 获取网站的正文元素

    我想检索以下网站的正文内容http sports espn go com nhl bottomline scores nhl s left1 http sports espn go com nhl bottomline scores nhl
  • Javascript 最佳实践,为什么使用逗号来链接函数/变量声明?

    我一直在为 jQuery jQueryLog 开发一个插件 以允许调试链选择器和返回值 如果你想检查一下 你可以这样做here http www jquerylog com 这已经是第二个版本了 第一个版本实际上是经过编辑的 jQuery

随机推荐

  • 如何使用 ggplot 将点随机散布在圆内,而不聚集在中心周围?

    我想用ggplot画一个圆 然后在圆内散布点 我有代码 摘自这个答案 https stackoverflow com a 68606605 6105259 这让我非常接近我想要的 但是 我希望点分散在圆内randomly 但现在我在中心周围
  • WPF Datagrid 中的 ItemTemplateSelector 与 AutoGenerateColumns

    在我们的数据网格中 我们使用ItemTemplateSelector根据绑定到特定单元格的数据在两个数据模板之间切换 由于列数取决于我们正在使用的当前数据集AutoGenerateColumns in our DataGrid 看来这个特殊
  • 有没有办法以编程方式将 iOS 设备的相机焦点设置为无限远?

    我正在创建一个应用程序 可以锁定相机焦点以进行视频录制 我想将焦点锁定到无限远 而无需用户手动调整焦点 这可能吗 谢谢 可悲的是没有 正如 Artem 所说 你可以将相机设置为焦点锁定模式 进入自动对焦模式 对焦 然后锁定 或连续自动对焦模
  • AndroidManifest.xml 使用 `android:name="io.flutter.app.FutterApplication"`

    升级到Flutter 2 10后 出现以下错误 Warning Your Flutter application is created using an older version of the Android embedding It i
  • Magento 愿望清单 - 删除项目

    我构建了一个自定义脚本 用于使用 AJAX 在愿望清单中添加和删除项目 添加产品不是问题 但我不知道如何删除项目 Magento 版本是1 5 1 0 脚本位于 scripts 看起来像这样 include once app Mage ph
  • 如何为 GAE 数据存储数据模型创建两个唯一的可查询字段?

    首先进行一些设置 上周 我在实现我构建的一种特定方法时遇到了麻烦 该方法允许我管理与一个 db Model 对象关联的两个唯一字段 由于这是不可能的 因此我创建了一个父实体类和一个子实体类 每个类都为 key name 分配了一个唯一值 你
  • Rails new 给出“在任何源中都找不到正确版本的 Railties (4.2.5.1)”错误

    我正在尝试将 Rails 5 0 0 rc1 与 Ruby 2 3 1 一起使用 但是 如果我尝试在 programming 目录中创建一个新项目 我会得到以下信息 Documents Programming rails new foo C
  • 未找到资源样式/LaunchTheme

    我刚刚将应用程序的图标更改为较新的图标 现在每当我尝试构建并运行该应用程序时 我都会收到以下错误 Project build app intermediates manifests full debug AndroidManifest xm
  • 将 GZIP:ed 文本存储在 mysql 中?

    对于较大的应用程序和数据库来说 在将文本数据插入数据库之前对其进行 GZIP 压缩是很常见的事情吗 我猜想在再次解压缩之前 对实际文本字段的任何全文搜索都将不起作用 我还没有看到太多这样的事情 因为它基本上可以防止人们对 MySQL 端的数
  • Redux、规范化实体和 lodash 合并

    我使用 Redux React 和 Lodash 以及相当标准的标准化实体存储 当我在 redux 减速器中合并新实体时 对所有现有实体的引用都会发生变化 尽管没有被修改 从而导致任何纯组件重新渲染 lodash 合并是否有一种替代方法 可
  • 铁轨变了?方法总是错误的

    我正在尝试检查我的模型中复选框值是否已更改 如果改变了我想要我的方法set ip setting跑进去before save but my x即使我更改值 变量也总是返回 false 为什么它总是返回错误 我不明白我做错了什么 before
  • C 和 C++ 中类型的互操作性

    一个非常简单的问题 是否有任何保证 Cint和 C 是一样的int 在同一系统上 不言而喻 这当然是一个纯粹的理论问题 C 和 C 标准使用相同的语言来定义基本类型 但是 Fortran 2003 明确指出 use ISO C BINDIN
  • 在 C 中将块指令作为宏的参数传递

    我不知道这是否可能 我想像参数一样在宏中传递指令块 我将向您展示一个示例 define ADD MACRO size BLOCK for int i 0 i
  • ASP NET MVC 3 - 如何首先使用两个表和 Database.Setinitializer 在代码中重置数据库?

    我的问题在于缺乏MVC经验 基本上 我在数据库中有两个表 人 提供 对于每个我都创建了一个模型 一个控制器和一个模型 因此结构如下所示 public class Offer public int OfferID get set public
  • 发送大尺寸图像、视频和音频时 XMPP 客户端断开连接

    我已经使用 robbiehanson xmpp 示例实现了 xmpp 我可以聊天 也可以发送图像 我发送的图像被转换为 nsdata 并进一步转换为 Base64String 然后发送字符串 self xmppStream sendElem
  • Google 日历 API 的换行符?

    我正在尝试从我的网络应用程序中插入 Google 日历中的事件描述 但无法获取 n 或 br 被解释为换行符 谷歌日历如何解释换行符 帮助将不胜感激 您使用特定的客户端库吗 如果使用该协议 只需在内容元素中添加换行符即可
  • Django 应用程序初始化代码(例如连接到信号)

    我需要一个地方来运行特定于应用程序的初始化代码 例如连接到信号 当我将代码放入 init py我最终得到了模型的循环导入 有没有办法在框架设置时和执行任何请求之前触发函数 我使用相当旧的 django 96 6 版本 但我也对当前版本的解决
  • CakePHP 保存外键问题

    我在将 用户 表的外键保存在另一个名为 基本 的表中时遇到问题 我试图向用户询问一系列问题 每个完成的系列问题和用户 ID 都应该保存到相应的表中 这是在模型中进行验证后保存我的数据的内容 验证成功 所有数据均已保存 但外键保存为 0 pu
  • 如何将Mandelbrot的每个像素计算划分到不同的节点上?

    我的问题是我应该使用什么数据结构将工作分配给每个线程并从中获取计算值 我首先想到的是用保存 x y 和 iterate value 的结构填充向量 0 向量 63999 对于800x800像素 将这些向量传递给每个节点 gt 然后将给定向量
  • 当元素数据更改时,jQuery data() 属性不会更新

    我想使用 jQuerydata api 用于检索元素的所有数据属性 但这个 api 的缓存性质确实很烦人 有时我需要更改 javascript 中元素的某些数据属性 但是data api 始终返回每个数据属性的初始值 所以我必须使用attr