jquery创建的数据-*有时无法解析

jquery created data-* sometimes not parsed

本文关键字:创建 数据 jquery      更新时间:2023-09-26

在我的HTML中,我有这样的标准列表:

<ul>
    <li></li>
    <li></li>
    <li></li>
</ul>

然后使用jquery为li标签添加一些data-*属性。

$('li:nth-child(1)').attr('data-token', 'xxxxxxx');
$('li:nth-child(2)').attr('data-token', 'zzzzzzz');

当我检查li标签时,它会显示带有其值的data-token,但当我使用jQuery 执行此操作时

$('ul li').each(function(){
    console.log($(this).data());
});

有时,某些lis标签没有数据令牌。是什么导致了这个问题?

如果您调用data()方法一次,然后设置data-*属性,则会出现问题,此时它将不会同步数据属性中的值。

所以总是使用数据api来设置值

$('li:nth-child(1)').data('token', 'xxxxxxx');

演示:问题,解决方案

.data().data(key)仅在使用方法.data(key, value)存储时返回值,并且如果它已经存在于DOM中,则返回值。

您只是没有指定您想要的data-*属性。

$('ul li').each(function(){
    console.log($(this).data('token'));
});