为DOM元素引用创建常数时间数据结构
Creating a constant time data structure for DOM element references
相关讨论。
我知道我可以构建一个引用元素/节点的数组。我还意识到,我可以使用一个巧妙的技巧,将数组视为堆(索引2n
和2n+1
为儿童)来构建一个(可能浪费的)二叉搜索树。
但是所有这些对于我这个不成熟的优化者来说还不够。此外,实现BST将容易出现bug。
这是我的问题。我可以以某种方式使用元素引用作为索引到javascript的哈希(这是对象,反之亦然?)。如果不是,我能否从元素引用中召唤出一个唯一的字符串,然后将其用作散列键?如果不是,jQuery到底是怎么做到的?
最简单的选择是在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时检索它。很容易看出它的作用
相关文章:
- Java脚本时间添加
- Json数据包含日期和时间格式
- 如何根据时间运行不同的脚本
- 用每小时的差值填充数组/列表-从下拉列表中给定两个时间值
- 在wordpress一定时间后更改自定义字段
- 更改angularjs中的日期-时间格式
- 将当前时间添加到我的页面上的特定部分
- 门户网站:当地时间有多有用
- 显示时间的脚本
- 如何在窗体打开时从javascript倒计时计时器值中节省时间
- 通过JSON&比较时间
- Javascript时间轨迹
- 将日期时间作为 JSON 发送将无法在我的视图中正确显示
- 将日期时间从json转换为可读格式
- 高库存时期时间与时区不匹配
- Jquery如何检查今天的时间大于使用给定时间
- jquerydatetimepicker日期和时间应在框默认值中,而无需单击框
- primefaces日历可以禁用过去的日期和时间吗
- Jquery函数在错误的时间提交
- 为DOM元素引用创建常数时间数据结构