在 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 存储库中的行号会很棒!
最佳答案
jQuery 2 仍然使用此方法,该属性更难检测,因为它使用隐藏的随机数作为属性名称的一部分,而不仅仅是 jQuery.expando
第 42 和 43 行向元素添加了唯一的数据属性,Data.js 文件实际上是一个(大部分)独立的类定义,jQuery 使用它来处理数据存储功能。我承认代码库中的代码相当复杂,但是并不建议使用它作为学习 jQuery 如何工作的方式,请使用 code.jquery.com/jquery-2.0.3.js 上的注释源。相反,这样做可以让理解一切如何相互作用变得更加容易。
关于javascript - jQuery 2.x 如何唯一标识一个元素(在 .data() 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20979302/