首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >添加新值后,jQuery .data()不是实际值

添加新值后,jQuery .data()不是实际值
EN

Stack Overflow用户
提问于 2014-08-04 10:13:05
回答 4查看 57关注 0票数 0

我有迪夫

代码语言:javascript
运行
复制
<div data-a="aa">   </div>

然后我从以下网站获取数据:

代码语言:javascript
运行
复制
var data = $("div").data();

而且它工作得很好。然后通过数据属性添加这样的新数据

代码语言:javascript
运行
复制
$("div").attr("data-b", "bb");

然后我又得到了数据就像

代码语言:javascript
运行
复制
var updatedData = $("div").data();

但是,新值( data-b attr和bb值)并不存在。为什么会这样呢?(我想通过data-属性管理数据)

小提琴操场

在我的情况下,使用属性是合适的,所以我不想使用.data("key", "val")data-属性无论如何都是有效的。

有趣的是,当我在第一次调用.data()之前添加数据-属性时,它工作正常。那么,是否有一种忽略或“重建”数据缓存的方法?这里的例子

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-08-04 10:15:06

当您使用data() api时,jquery使用内部私有数据结构来存储数据,这样就不会更新属性值。

使用data时,不需要使用data-前缀。

因此,一旦您使用data读取值,属性值就会被复制到内部数据结构中,此后对属性所做的任何更改都不会反映在data中。

演示:小提琴

票数 2
EN

Stack Overflow用户

发布于 2014-08-04 10:14:42

使用.data("key","value")设置值

代码语言:javascript
运行
复制
$("div").data("b", "bb");

还可以使用.data("key")获取值

代码语言:javascript
运行
复制
var data = $("div").data("b");
票数 4
EN

Stack Overflow用户

发布于 2014-08-04 10:22:57

将数据添加到元素中有两种方法,一种是通过jQuery使用data()函数,另一种是手动添加‘data -属性’。

您面临的问题是,您总是可以使用data()函数来获取和设置数据属性值。但是这个函数设置的属性在HTML文件中是不可见的。

在下面的HTML文件中,'data-c‘是不可见的。

代码语言:javascript
运行
复制
<div class='bar' data-a='avalue' data-b='bvalue'></div>

<script>
console.log($( "div" ).data());
$( "div" ).data('c','cvalue');
console.log($( "div" ).data());
</script>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25116375

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档