2

私はこのようなことをしたいです:

var elem = document.createElement("input");
elem.setAttribute("my-attribute", myObject);
document.getElementById("parent").appendChild(elem);

myObject後で、この(および同様の)要素に対していくつかのアクションを実行するときにフェッチする必要があります。

注:これは属性として必要です(たとえば、のように要素オブジェクトのメンバーとしてではありませんelem.myAttribute = myObject)。一部の要素については、値はページのHTMLにハードコードされた文字列です。私が必要としているのは、この属性を他の要素に対してプログラムで設定し、必ずしもプレーンな文字列ではない値を使用する機能です。

これを試してみましたが、ブラウザ(Firefox 14)で機能しましたが、これがクロスブラウザで機能するかどうか、またjQueryを使用することにした場合にjQueryを使用してそのような属性の値を取得できるかどうかを知る必要があります後で私のページ。

4

2 に答える 2

5

いいえ-定義による属性は文字列値を格納します。明らかなアプローチは、オブジェクトをプロパティとして格納することですが、それは適切ではないと言います。

また:

1)jQueryのデータAPIを使用します(文字通り要素にデータを記録しないため、文字列だけでなく、必要なものを保存できます)

2)オブジェクトを文字列化し、HTML5データ属性として要素に追加します。

var elem = document.querySelector('p'),
    obj = {foo: 'bar'};
elem.setAttribute('data-myObj', JSON.stringify(obj));
/* ...then, later... */
var data = JSON.parse(elem.getAttribute('data-myObj'));

ただし、JSONを扱っているため、このオブジェクトの一部としてメソッドを保存することはできません。それらはによって削除されJSON.stringify()ます。

最後に、属性を使用すると、(プロパティとは異なり)HTMLダンプに表示されるため、HTMLが濁ってしまいますが、これは純粋に表面的な弱点です。

于 2012-08-07T15:28:47.647 に答える
1

これを行うには、jqueryのdata属性を使用できます(http://api.jquery.com/data/)

html 5データ属性を使用できます:http: //ejohn.org/blog/html-5-data-attributes/

そして、これらはjqueryデータAPIを使用して取得できます。

ただし、これらは厳密化する必要があります

「jQuery1.4.3以降、HTML5データ属性はjQueryのデータオブジェクトに自動的に取り込まれます」

于 2012-08-07T15:28:28.330 に答える