0

DOM 要素をオブジェクトに保存したいと思います。しかし、値としてではなく、オブジェクトのキーとして保存したい。しかし、JavaScriptのコアはそれができないと思います。

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

要素をインデックス オブジェクトに保存する方法を知っていますか?


ドキュメントに XXXXXX 要素があるとします。何らかのイベントが発生したときに要素のプロパティにアクセスしたい場合、XXXXXX要素を繰り返して見つけたくないのです。

2 つの理由で jquery のデータを使用しない理由:

  1. ネイティブjavascriptでやりたい
  2. 別の配列で elementid とは別のデータを反復処理したくない

したがって、それを行うための完璧な方法は、キーに要素を持つオブジェクトを 1 つだけにして、簡単にアクセスできるようにすることでした。そして、それらを繰り返したい場合は、データで i を実行するだけです

4

3 に答える 3

1

JavaScript オブジェクトは文字列のみをキーとして受け入れ、.toString()他のものをキーとして使用しようとすると JS が使用され、通常はすべてが (単一の) key の下に格納されます"[object Object]"

$('#a').data()その要素に関連付けられたデータを要素に直接保存するために使用できない理由はありますか?

それができない場合は、そのようなすべての要素に ID があると仮定して、要素 ID をオブジェクト キーとして使用します。

注: ES6 には、任意のキーを使用できるMapオブジェクトがありますが、これは現在のブラウザーでの実験的な機能にすぎません。ただし、その場合でも、マップにアクセスするたびに、新しく構築されたオブジェクトではなく、まったく同じ元の jQuery オブジェクトを使用する必要があるため、jQuery でラップされたオブジェクトではなく、実際の要素をキーとして使用する必要があります。$(element)$('#a') !== $('#a')

于 2013-10-25T13:05:32.063 に答える
0

Javascript オブジェクトは文字列のみをキーとして受け入れます。

したがって、文字列以外のキー値を指定しようとすると、javascript は内部でそのオブジェクトの .toString() メソッドを呼び出し、その戻り値をキーとして使用します。

于 2013-10-25T13:08:52.683 に答える
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 に答える