我试图将一些"私有"数据与DOM元素相关联.而不是将该数据添加到DOM元素本身(我想避免更改DOM元素),我有一个单独的数据对象,我想用作地图.
而不是:
document.GetElementById('someElementId').privateData = {};
Run Code Online (Sandbox Code Playgroud)
我想要做
internalPrivateDataMap[document.GetElementById('someElementId')].privateData = {};
Run Code Online (Sandbox Code Playgroud)
并非所有元素都有id字段,有些是动态创建的,所以我不能使用id作为键.
这适用于大多数元素,但对于"a"元素,使用的键似乎是元素的href,我认为因为DOM为元素定义了toString()函数.
结果是,如果我有两个具有相同href的"a"元素,它们将共享privateData,这是我不想要的.
我目前的解决方法是生成一个我可以用作键的内部唯一ID,但这需要我修改我要避免的DOM元素.
正如您所注意到的,这不能可靠地工作,并且我知道如果不给每个元素一个(生成的)ID或至少为新的自定义元素字段分配唯一ID,它就无法使其工作; DOM节点根本没有必要的属性来作为地图中的键.
所以你真的有这些解决方案:
element.data()读取私有数据并将其放入DOM元素中element.privateData = {};注意事项仍然需要清理事件处理程序,这些事件处理程序会保留对元素的引用,否则您将出现意外的内存泄漏.| 归档时间: |
|
| 查看次数: |
3221 次 |
| 最近记录: |