我知道我可以构建一个对元素/节点的引用数组。我还意识到我可以使用处理数组的巧妙技巧(如子代的2n
和2n+1
)来构建一个(可能浪费的)二进制搜索树。
但对于我这个过早的优化者来说,这还不够。此外,实施BST将容易出错。
这是我的问题。我可以以某种方式使用元素引用作为javascript的哈希(它们是对象,或反之亦然?)的索引。如果没有,我可以从元素引用中找出一个唯一的字符串,然后我可以将其用作我的哈希键吗?如果没有,jQuery怎么做呢?
答案 0 :(得分:1)
最简单的选择是在DOM对象上使用自己的属性:
var element = document.getElementById("test");
element.myData = "whatever";
以下是jQuery的.data()
函数如何工作的一般概念,您可以在自己的普通javascript中使用它。它在对象上使用一个自定义属性,然后将其他所有内容存储在由该自定义属性的值索引的数据结构中。
var idCntr = 0; // global cntr
var data = {};
var element = document.getElementById("test");
var id = element.uniqueID;
if (!id) {
id = idCntr++ + "";
element.uniqueID = id;
}
data[id] = "whatever";
// then some time later, you can do this
var element = document.getElementById("test");
console.log(data[element.uniqueID]); // whatever
为数据对象中的给定对象存储多个属性需要更多参与,但这是一般的想法。
而且,如果你可以使用jQuery,那很简单:
$("#test").data("myData", "whatever"); // sets the data
console.log($("#test").data("myData")); // retrieves the data
如果你想真正了解jQuery的.data()
是如何工作的,你可以通过第一次调用来设置数据,然后在使用未明确的jQuery时检索它。很容易看出它的作用。