私は持っていDOM
ます:
<body>
<div>
<h1 id="header1">home1</h1>
<a id="link1">link1</a>
<p id="para1">things1</p>
</div>
<span>
<h1 id="header2">home2</h1>
<a id="link2">link2</a>
<p id="para2">para2</p>
</span>
</body>
これを好きなようにインデックス付けしたいJSON
:
{
"body": {
"div": [
{
"h1": "header1",
"a": "link1",
"p": "para1"
}
],
"span": [
{
"h1": "header2",
"a": "link2",
"p": "para2"
}
]
}
}
私はこれを試しました:
function indexELEMS()
{
listy = $("*[id]").map(function(){
outy = this.tagName+":"+this.id;
return outy;
}).get();
DOMobj = $.extend({}, listy);
console.log(DOMobj);
}
しかし、私はこのようなものを得ます:
0:"h1:home"
1:"a:link1"
2:"p:things1"
理解できます。関数にそれを行うように指示したところです。
しかし、次h1
のようなだけで試してみると:
function indexELEMS()
{
outy = {};
listy = $("h1[id]").map(function(){
outy.h1s = this.tagName+":"+this.id;
return outy;
}).get();
DOMobj = $.extend({}, listy);
console.log(DOMobj);
}
最後のオブジェクトで上書きしますがouty.h1s
、(JSON) オブジェクトに追加するにはどうすればよいですか?
さらに良いことに、ドキュメント要素構造全体の出力を適切な JSON 形式で取得するにはどうすればよいでしょうか?
私はできる:$('document > body > div > h1').attr('id')
毎回、しかしそれは非常に非効率的でリソースを大量に消費する.すべての要素をキャッシュしてからそれらを読みたい.watch
. 、適切な位置に要素を作成します。
または、どの要素がID
s を持っているか (そしてそれID
が重複しているかどうかを確認する)、いくつかのネイティブ関数の概要を取得するより良い方法はありますか?
また、JSON オブジェクトが複数のdiv:
エントリを許可しないのではないかと心配しています。
それとも、完全に jQuery セレクターを使用して、効率性について泣き言を言うのをやめるべきですか?
(編集:わかりました。複数の div 部分はおそらく不可能です。または、 .div[1] で 2 番目の部分にアクセスできませんか?)
したがって、私の主な質問は、 indexELEMS 関数を使用する場合、次の方法でアクセス可能なオブジェクトを取得するにはどうすればよいかということです。
DOMobj.body.div.h1
だから私はそれを実行したり、ループIf ==
で循環したりできますdiv.[index]
$.each
$(' ') の代わりに DOMobj.body[index] を巡回すると、$(' ') から作成されたオブジェクトに実際にアクセスできるのでしょうか? 体のような?そう簡単にはいかない..