.data()在哪里存储值?

时间:2012-03-04 12:22:14

标签: javascript jquery performance

  

可能重复:
  How does jQuery .data() work?

在jQuery中,.data读取HTML5 data-*属性的值,但是当您使用data函数设置/更新值时,它不会更改属性。

​<div id="first" data-foo="attr value" >​​​​​​​​​​​​​​​​​​​​​​​​​​​  </div>

var attr = $('#first').data('foo');
alert(attr); // alerts: attr value

$('#first').data('foo', 'data value');
var data = $('#first').data('foo');
alert(data); //alerts: data value

var attrAgain = $('#first').attr('data-foo');
alert(attrAgain);​ // alerts: attr value

jsFiddle

jQuery在哪里存储值?在文档中写道:

  

数据属性在第一次访问数据属性时被拉出,然后不再被访问或变异(所有数据值都在内部存储在jQuery中)。

但是在哪里?我试图了解使用.data函数的费用是多少 如何在没有.data功能的情况下达到这些值?

1 个答案:

答案 0 :(得分:3)

jQuery有一个内部 - 你无法立即访问 - 存储空间。如果您需要更新数据属性,请查看Making jQuery.data() selector aware

jQuery使用那个内部存储(除了javascript对象,顺便说一句。)有两个原因:

  1. 绕过.data()
  2. 的每次调用访问DOM
  3. 数据属性可能只包含字符串/ int,因此.data('foo', {bar:"baz"})无法正常工作
  4. jQuery根据data module of jQuery 1.7.1将这些背景信息存储在jQuery.cache