16

我广泛使用数据属性来管理客户端事件中的数据。是否可以使用 javascript 或 jquery 为数据属性动态分配值?

<li data-class_value="somevalue" class="myclass"></li>


$('.myclass').click(function(){
   $(this).data('class_value') = "new value";
});

上面的 javascript 代码抛出错误:

“未捕获的 ReferenceError:分配中的左侧无效”。

有人可以告诉我这是如何实现的吗?

4

3 回答 3

30

我相信上面的答案只会在 jQuery 中的那个元素上设置数据对象。

如果你需要设置实际的 HTML data-* 属性,你需要使用这个:

$(this).attr("data-class_value", "new value");

请注意以这种方式检索 HTML5 data-* 属性,因为虽然您可以使用快捷方式$(this).data("class_value");检索它们,但后续检索将使用 jQuery 数据对象中的缓存值。

来自jQuery 文档

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

资料来源:数据属性的jQuery缓存

于 2013-10-30T03:00:01.270 回答
23

你需要做

 $(this).data('class_value', "new value");
于 2011-08-23T15:07:36.230 回答
2

$(this).data('class_value','new value') ;

.data

于 2011-08-23T15:08:38.320 回答