jQuery .data()和setAttribute之间的区别

时间:2014-10-18 14:11:12

标签: javascript jquery

1)设置用户数据(请参阅Live demo):

  document.getElementById('myelement1').setAttribute('data-size', 20);

在使用浏览器的检查器分析元素时,我可以看到这一点:

<div id="myelement1" data-size="20">Blah</div>

2)使用jQuery设置用户数据时:

$('#myelement2').data('size', 20);

在使用浏览器的检查器分析元素时,我可以看到这一点:

<div id="myelement2">Blah</div>

为什么DOM中的元素存在于1)但不存在于2)?

jQuery .data('size', 20)如何存储数据,以及它在DOM中的位置? (我在JS中不够先进,无法在代码中找到确切的位置)

2 个答案:

答案 0 :(得分:2)

jQuery没有将物理属性附加到元素。它保留了一个内部对象(称为cache),它保存数据,并引用它对应的元素 - 它不存储在DOM或属性中。

答案 1 :(得分:1)

元素的数据存储在内部,即存储在jQuery代码的本地集合中。

来自data method的文档:

  

&#34;第一次在data属性中提取数据属性   被访问,然后不再被访问或变异(所有数据   然后将值存储在jQuery内部。&#34;

请注意,尽管data方法并未更改数据属性,但设置数据属性会将其放入DOM中,并使用data方法使其可用:

$('#myelement2').attr('data-size', 20);

console.log($('#myelement2').data('size')); // shows 20

演示:http://jsfiddle.net/kq93n878/