0

我想在对象中保存一个 DOM 元素。但不是作为值,我想将其保存为对象的键。但我认为 javascript 的核心无法做到这一点。

data={}
data[$('div#a')] = 'A';
data[$('div#b')] = 'B';
console.log(data[$('div#a')]); //return B

您知道将元素保存在索引对象中的某种方法吗?


想象一下,我的文档中有 XXXXXX 个元素。如果我想在某些事件发生时访问元素属性,我不想迭代 XXXXXX 元素来找到它。

为什么我不使用 jquery 的数据有两个原因:

  1. 我想在原生 javascript 上做
  2. 我不希望另一个数组从 elementid 迭代单独的数据

因此,完美的方法是只有一个对象,其键上的元素可以轻松访问它们。如果我想迭代它们,我只需要在数据中为 i 做

4

3 回答 3

1

JavaScript 对象只接受字符串作为键,.toString()如果您尝试使用其他任何东西作为键,JS 将使用,通常会导致所有内容都存储在(单个)键下"[object Object]"

是否有任何理由不能将$('#a').data()与该元素关联的数据直接存储在元素上?

如果做不到这一点,假设每个这样的元素都有一个 ID,只需使用元素 ID 作为对象键。

注意:ES6 有一个可以使用任意键Map的对象,但这只是当前浏览器中的一个实验性功能。但是即使那样,您也必须使用实际元素作为键而不是 jQuery 包装对象,因为-每次访问地图时都必须使用完全相同的原始 jQuery 对象,而不是新构造的对象。$(element)$('#a') !== $('#a')

于 2013-10-25T13:05:32.063 回答
0

对象键必须是刺。

您可以使用该data方法将任何内容与元素相关联:

$('div#a').data('name', 'A');
$('div#b').data('name', 'B');
console.log($('div#a').data('name')); //return B
于 2013-10-25T13:11:19.890 回答
0

Javascript 对象只接受字符串作为键。

因此,如果您尝试提供字符串以外的键值,javascript 将在内部调用该对象的 .toString() 方法并将其返回值用作键。

于 2013-10-25T13:08:52.683 回答