我有迪夫
<div data-a="aa"> </div>
然后我从以下网站获取数据:
var data = $("div").data();
而且它工作得很好。然后通过数据属性添加这样的新数据
$("div").attr("data-b", "bb");
然后我又得到了数据就像
var updatedData = $("div").data();
但是,新值( data-b
attr和bb
值)并不存在。为什么会这样呢?(我想通过data-
属性管理数据)
小提琴操场
在我的情况下,使用属性是合适的,所以我不想使用.data("key", "val")
。data-
属性无论如何都是有效的。
有趣的是,当我在第一次调用.data()之前添加数据-属性时,它工作正常。那么,是否有一种忽略或“重建”数据缓存的方法?这里的例子
发布于 2014-08-04 10:15:06
当您使用data()
api时,jquery使用内部私有数据结构来存储数据,这样就不会更新属性值。
使用data时,不需要使用data-
前缀。
因此,一旦您使用data读取值,属性值就会被复制到内部数据结构中,此后对属性所做的任何更改都不会反映在data中。
演示:小提琴
发布于 2014-08-04 10:14:42
使用.data("key","value")
设置值
$("div").data("b", "bb");
还可以使用.data("key")
获取值
var data = $("div").data("b");
发布于 2014-08-04 10:22:57
将数据添加到元素中有两种方法,一种是通过jQuery使用data()函数,另一种是手动添加‘data -属性’。
您面临的问题是,您总是可以使用data()函数来获取和设置数据属性值。但是这个函数设置的属性在HTML文件中是不可见的。
在下面的HTML文件中,'data-c‘是不可见的。
<div class='bar' data-a='avalue' data-b='bvalue'></div>
<script>
console.log($( "div" ).data());
$( "div" ).data('c','cvalue');
console.log($( "div" ).data());
</script>
https://stackoverflow.com/questions/25116375
复制相似问题