jQuery属性集与本机js设置的属性不一致,显然它们以不同方式同时存在。谁能告诉我发生了什么事?
$(document).ready(function() {
document.getElementById('attributed').setAttribute('data-foo','mydiv2');
$('#attributed').data('foo','mydiv4');
// jQuery thinks it's mydiv 4
alert($('#attributed').data('foo'));
// native thinks it's mydiv 2!
alert(document.getElementById('attributed').getAttribute('data-foo'));
});
答案 0 :(得分:0)
jQuery的.data()
只读取DOM元素的实际属性,如果在该元素和该键的自己的.data()
数据结构中没有设置任何内容。因此,一旦您使用jQuery的.data()
为该键设置了一个值,它将具有与该元素上的实际HTML属性不同的值。
这样做有几个原因。如果javascript对象直接与DOM对象(作为属性)关联,则早期的浏览器会出现内存泄漏问题。并且,纯属性只能是字符串。 jQuery的.data()
没有这些问题。