由jquery更新的数据属性值在DOM中不可见

use*_*007 19 jquery custom-data-attribute

我正在通过jQuery更新数据属性,如:

jQuery('div').data('hidden', 'true');
alert(jQuery('div').data('hidden'));
Run Code Online (Sandbox Code Playgroud)

数据属性值改变并返回新值,true但DOM仍显示旧值false.

Aru*_*hny 37

当您使用.data()更新数据值时,它正在更新由jQuery管理的内部对象,因此它不会在data-*属性中更新


小智 5

我太糟糕了:(并且能够解决问题。如果html是动态的并且数据属性在第一次访问后更改,那么我们无法使用jquery数据方法来实现这一点。

根据jQuery.data()

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

所以我所做的是,将其更改为 attr 方法,该方法不会为您提供整数的解析值,因此您必须使用 '+' 操作数进行转换,例如:

+ myElement.attr('data-index');
Run Code Online (Sandbox Code Playgroud)

注意:你要小心,如果数据属性中有任何字符串,它会将结果转换为NaN。顺便说一句,这是您对代码实现的选择。