从attribute.dataset和jquery.data()方法获得不同的结果



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

这是错误的屏幕截图

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

.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设置的任何先前值(与数据集完全无关(

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

因此,您必须小心设置和检索内容。无可否认,它并不完全是直观的,因为它在不同的情况下会做一些不同的事情。

最新更新