jquery - 为 jQuery 的 $.data() 存储多个值的最佳方法是什么?

标签 jquery dom storage

如果在大量 div 上存储多个(10+)值,将它们全部存储在单个对象中还是作为单独的值是否更佳?

单个对象:

$("#div_id").data("data", {foo:1, bar:2});

单独的值:

$("#div_id")
  .data("foo", 1)
  .data("bar", 2);

每种方法的权衡是什么?其中一些属性将被频繁访问(例如在拖动等事件回调期间)。

最佳答案

在 1.4 中你可以这样做:

$('#somediv').data({ one : 1, two : 2, three : 3 });

这是初始化数据对象的好方法。然而,在 1.4.2 中,请记住,使用此表单将替换此元素上的任何现有数据。所以,如果你尝试这样做:

$('#somediv').data( 'one', 1 );

$('#somediv').data({ two : 2, three : 3 });

你将会毁掉“一”的值(value)。

(就个人而言,我认为这是一种耻辱,因为 jQuery 已经广泛使用了通过 $.extend 来合并对象。我不清楚为什么这里没有使用它。)

更新(用户建议:@ricka,谢谢):

1.4.3 及以上版本,它合并数据 ( http://api.jquery.com/data/#data-obj ):

In jQuery 1.4.3 setting an element's data object with .data(obj) extends the data previously stored with that element. jQuery itself uses the .data() method to save information under the names 'events' and 'handle', and also reserves any data name starting with an underscore ('_') for internal use.

Prior to jQuery 1.4.3 (starting in jQuery 1.4) the .data() method completely replaced all data, instead of just extending the data object. If you are using third-party plugins it may not be advisable to completely replace the element's data object, since plugins may have also set data.

关于jquery - 为 jQuery 的 $.data() 存储多个值的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/942348/

相关文章:

swift - Firebase 存储上传错误 : FIRStorageErrorDomain Code=-13000

javascript - 向所有登录 Web 应用程序的用户播放实时通知声音,无需重新加载页面

jquery - 使用 jQuery 更改不同域上 iframe 的文本框值?

javascript - 使用 Javascript/jquery 更改 CSS 属性

javascript - 在子元素的指令中获取 CSS 属性

algorithm - 在几何圆顶上存储顶点

javascript - 在 Angularjs 中初始化 jQuery 插件 (RoyalSlider)

java - 如何抑制 xml :base attribute that the java. xml Transformer 正在添加到导入的外部系统实体?

javascript - 从页面中选择所有 'a' 元素?

storage - 实现大规模日志文件分析