我有一个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
但是,如果我在's上试一下,就像这样:
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] 访问第二个部分?)
所以,我的主要问题是,如果你使用 indexELEMS 函数,我怎样才能得到一个可以通过以下方式访问的对象:
DOMobj.body.div.h1
所以我可以If ==
在上面做一个,或者div.[index]
在一个循环中$.each
循环
我想,通过 DOMobj.body[index] 而不是 $(' ') 循环,哦等等,我真的可以访问从 $(' ') 创建的对象吗?像.body?不可能那么容易..