在jQuery 1.x
元素中,在需要时会收到唯一标识符(缓存键),存储在节点的ele[jQuery.expando]
属性set by this line of code中。 Mootools uses similar logic
所以在jQuery 1.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 repo中引用行号非常好!
答案 0 :(得分:1)
jQuery 2仍然使用此方法,该属性很难检测,因为它使用隐藏的随机数作为属性名称的一部分,而不仅仅是jQuery.expando
它的第42行和第43行将唯一的数据属性添加到元素中,Data.js文件实际上是一个(大多数)独立的类定义,jQuery用它来处理数据存储功能。我承认代码在repo中相当复杂,但是使用它作为一种学习jQuery如何工作的方式并不是真的值得推荐,使用code.jquery.com/jquery-2.0.3.js上的注释源代替它,它可以理解一切如何交互更容易。