jQuery和本机js不同意数据属性

时间:2014-11-02 01:35:45

标签: jquery

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'));
});

1 个答案:

答案 0 :(得分:0)

jQuery的.data()只读取DOM元素的实际属性,如果在该元素和该键的自己的.data()数据结构中没有设置任何内容。因此,一旦您使用jQuery的.data()为该键设置了一个值,它将具有与该元素上的实际HTML属性不同的值。

这样做有几个原因。如果javascript对象直接与DOM对象(作为属性)关联,则早期的浏览器会出现内存泄漏问题。并且,纯属性只能是字符串。 jQuery的.data()没有这些问题。