Javascript jQuery 2.x如何唯一标识元素(在.data()中)

Javascript jQuery 2.x如何唯一标识元素(在.data()中),javascript,jquery,dom,Javascript,Jquery,Dom,在jQuery 1.x中,元素将在需要时接收唯一标识符(缓存键),存储在节点的ele[jQuery.expando]属性中 因此在jquery1.x中 var test = document.createElement("span"); console.log(test[jQuery.expando]);//undefined $(test).data("test", {stuff:2}); console.log(test[jQuery.expando]);//some uid 我很好奇,因

jQuery 1.x
中,元素将在需要时接收唯一标识符(缓存键),存储在节点的
ele[jQuery.expando]
属性中

因此在
jquery1.x中

var test = document.createElement("span");
console.log(test[jQuery.expando]);//undefined
$(test).data("test", {stuff:2});
console.log(test[jQuery.expando]);//some uid

我很好奇,因为我正在实现类似的逻辑,jQuery如何在
2.x
中识别节点。在github回购协议中引用行号将非常好

jQuery 2仍然使用这种方法,属性更难检测,因为它使用一个隐藏的随机数作为属性名的一部分,而不仅仅是
jQuery.expando


第42行和第43行向元素添加了unique data属性,data.js文件实际上是一个独立的类定义,jQuery使用它来处理数据存储功能。我承认代码在repo中相当复杂,但是使用它来学习jQuery是如何工作的并不是真正推荐的方法,而是使用在的注释源代码来实现这一点,这样可以更容易地理解一切是如何交互的


请参见

您能给我一个属性名称的示例或它们在哪里定义它吗?它在repo中的
data/data.js
中定义,如果您使用jquery数据检查dom节点的javascript表示,它将有一个类似于
jQuery14265252650.115245662563
(构造函数是
jQuery.expando+Math.random()
很抱歉,没有看到它们在中的元素上定义uid的位置。请链接行。在第42行和第43行中,将唯一数据属性添加到元素中,data.js文件实际上是a(大部分)jQuery用于处理数据存储功能的独立类定义。我承认代码在repo中相当复杂,但不建议使用它作为学习jQuery如何工作的一种方式,而是使用编译版本来实现,它使理解所有内容如何交互变得更容易。