【问题标题】:Getting different results from attribute.dataset and jquery .data() method从 attribute.dataset 和 jquery .data() 方法获得不同的结果
【发布时间】:2021-03-20 21:07:48
【问题描述】:

我得到了意想不到的结果,当我调试问题时,我发现我没有通过 Jquery .data() 方法获得正确的数据属性值。很明显,值不正确,当我将代码更改为 attribute.dataset.name(元素的本机属性)时,它返回了预期值。

here's the screenshot of an error

任何想法,可能的原因是什么,因为我在我的情况下使用了很多数据属性,并且不想在我通过 Jquery .date() 方法访问数据属性的任何地方更改代码。

【问题讨论】:

  • 请添加一些带有错误解释的真实代码,以便我们提供帮助。

标签: javascript jquery custom-data-attribute jquery-data


【解决方案1】:

.data(prop).dataset[prop] 可以不同,如果:

  • HTML 数据集包含一个值

  • jQuery 的 .data 之前已在元素上调用以存储与同一键关联的值

例子:

$('div').data('foo', 'newFooVal');

console.log($('div').data('foo'));
console.log($('div')[0].dataset.foo);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div data-foo="oldFooVal"></div>

jQuery 的.data 将检索:

  • 使用.data 设置的任何先前值(与数据集完全无关)

  • 如果没有为该元素的该键设置先前的值,则将返回数据集中该键的值

所以你必须小心设置和检索。诚然,它并不完全直观,因为它会在不同的情况下做不同的事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-21
    • 2013-08-14
    • 1970-01-01
    • 1970-01-01
    • 2020-06-11
    • 2015-06-12
    • 2016-06-26
    • 1970-01-01
    相关资源
    最近更新 更多