当我更改数据attr然后访问它时,我得到初始值?

时间:2014-05-14 15:41:15

标签: jquery

说,

<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的默认行为(如果是,我怎样才能实现我需要的)?

1 个答案:

答案 0 :(得分:6)

jQuery将在第一次访问时解析data-attribute,并在文档加载时默认解析。

如果要将数据值设置为false,则必须执行以下操作:

$("#link-one").data("status", false);

而且你可以通过以下方式访问它:

$("#link-one").data("status"); // False now

Quote

  

关于HTML5 data- *属性:这种低级方法不是   除非更方便.data(),否则检索data- *属性   方法已经检索过它们。

这意味着,一旦解析,它就不会再解析它。