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

use*_*579 0 jquery

说,

<a id="link-one" href="#" data-status="true">Anchor</a>
Run Code Online (Sandbox Code Playgroud)

以下代码在控制台上写入"true":

console.log($('#link-one').data('status'));
Run Code Online (Sandbox Code Playgroud)

而且,当我改变这样的值时:

$('#link-one').attr('data-status', 'false');
Run Code Online (Sandbox Code Playgroud)

值会发生变化,我可以通过使用Chrome检查器检查元素来查看.是的,它确实在变化.

但是,在更改之后再分配/更改值然后在更改后再次访问它时返回初始值,而不是修改后的新值.我需要访问当前值,即更改后的值.

console.log($('#link-one').data('status'));  // writes "true"
$('#link-one').attr('data-status', 'false');
console.log($('#link-one').data('status'));  // writes "true" again
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?或者这是jQuery的默认行为(如果是,我怎样才能实现我需要的)?

Nie*_*els 6

data-attributejQuery第一次访问它时进行解析,并在加载文档时进行默认解析.

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

$("#link-one").data("status", false);
Run Code Online (Sandbox Code Playgroud)

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

$("#link-one").data("status"); // False now
Run Code Online (Sandbox Code Playgroud)

Quote:

关于HTML5 data-*属性:这个低级方法不检索data-*属性,除非更方便的.data()方法已经检索它们.

这意味着,一旦解析,它将不会再次解析它.