说,
<a id="link-one" href="#" data-status="true">Anchor</a>
以下代码写入&#34; true&#34;在控制台上:
console.log($('#link-one').data('status'));
而且,当我改变这样的值时:
$('#link-one').attr('data-status', 'false');
值会发生变化,我可以通过使用Chrome检查器检查元素来查看。是的,它确实在变化。
然而,在更改之后再分配/更改值,然后在更改后再次访问它时返回初始值,而不是修改后的新值。我需要访问当前值,即更改后的值。
console.log($('#link-one').data('status')); // writes "true"
$('#link-one').attr('data-status', 'false');
console.log($('#link-one').data('status')); // writes "true" again
我错过了什么吗?或者这是jQuery的默认行为(如果是,我怎样才能实现我需要的)?
答案 0 :(得分:6)
jQuery将在第一次访问时解析data-attribute
,并在文档加载时默认解析。
如果要将数据值设置为false,则必须执行以下操作:
$("#link-one").data("status", false);
而且你可以通过以下方式访问它:
$("#link-one").data("status"); // False now
关于HTML5 data- *属性:这种低级方法不是 除非更方便.data(),否则检索data- *属性 方法已经检索过它们。
这意味着,一旦解析,它就不会再解析它。