我读了这篇关于$ .data和$ .attr
之间使用差异的讨论jQuery Data vs Attr?其中一个答案说这个
使用attr()
设置数据
- 可从$(元素).attr('data-name')
访问- 可从element.getAttribute('data-name'),
访问- 如果值是数据名称的形式,也可以从$(元素).data(名称)和element.dataset ['name']和 element.dataset.name
- 在检查时可见元素
- 不能是对象
我尝试使用attr()设置一个值,然后同时使用attr()和date(),但结果与写入的结果不同。
$(document).on('change', '#sl', function() {
var selVal = $(this).val();
$('#txt').removeAttr('data-name');
$('#txt').attr('data-name', selVal);
console.log("get by attr " + $('#txt').attr('data-name'));
console.log("get by data " + $('#txt').data('name')); // get only the first attribute you set
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="sl">
<option value="foo">foo</option>
<option value="bar">bar</option>
</select>
<input id="txt">
如果我错了或者我理解写的是什么,你能解释一下吗?
谢谢
答案 0 :(得分:1)
.data()
使用内部缓存,它仅使用data属性作为默认值。在通过.data(key, value)
执行更新操作时,DOM 未更新。此外,在更新.attr(key, value)
时,它不会更新缓存。
简而言之,请勿混用.attr()
和.data()