我广泛使用数据属性来管理客户端事件中的数据。是否可以使用javascript或jquery动态地为数据属性赋值?
<li data-class_value="somevalue" class="myclass"></li>
$('.myclass').click(function(){
$(this).data('class_value') = "new value";
});
以上javascript代码抛出错误:
“未捕获的ReferenceError:赋值中的左侧无效”。
有人可以告诉我这是如何实现的吗?
答案 0 :(得分:26)
我相信上面的答案只会在jQuery中设置该元素的数据对象。
如果您需要设置实际的HTML data- *属性,则需要使用:
$(this).attr("data-class_value", "new value");
请注意以这种方式检索HTML5 data- *属性,因为虽然您可以使用快捷方式$(this).data("class_value");
来检索它们,但后续检索将使用jQuery数据对象中的缓存值。
来自jQuery docs:
数据属性在第一次访问数据属性时被拉出,然后不再被访问或变异(所有数据值都在内部存储在jQuery中)。
答案 1 :(得分:22)
你需要做
$(this).data('class_value', "new value");
答案 2 :(得分:2)
$(this).data('class_value','new value') ;
<强> .data
强>