我正在使用jQuery.data()来存储jQuery DOM对象引用:
myObj.data('key', $('#element_id'));
我会经常使用它(通常是相同的DOM对象),所以我不想占用太多内存。 jQuery是存储引用,还是存储DOM对象的深层副本?在这种情况下,我认为最好存储元素id而不是元素引用。
答案 0 :(得分:11)
使用$('#element_id')
构建的jQuery对象包含
您在数据中存储的内容(在节点中)是jQuery对象。此对象不包含引用的DOM节点的任何深层副本,因此您不存储深层副本,而只是存储主要包含字符串和少量指针的小对象。
由于DOM节点引用被缓存,它比仅具有id更有效(稍微,因为通过id查找节点总是很快,但如果你有一个更复杂的选择器,这将有所作为)。
因此,在我看来,你做得很好,效率很高。
答案 1 :(得分:7)
您可以直接查看源代码,yay代码是开源的:)
Lines 51 & 52 of data.js有一个有用的评论:
//可以将对象传递给jQuery.data而不是键/值对;这得到了
//浅被复制到现有缓存
所以我猜这是一个浅薄的副本!
更新07/14 - 该链接指向head:master所以现在已经完全过时了,这是我正在谈论的内容的规范链接:as at 16ba6ff