Javascript 将有关选定元素的信息收集到对象数组中

Javascript 将有关选定元素的信息收集到对象数组中,javascript,jquery,Javascript,Jquery,我有这样的标记: <span class="makearray">click me</span> <div id="container"> <ul> <li class="noindex"><span class="txt">blahblah</span></li> <li class="noindex"><span class="txt"&g

我有这样的标记:

<span class="makearray">click me</span>
<div id="container">
    <ul>
        <li class="noindex"><span class="txt">blahblah</span></li>
        <li class="noindex"><span class="txt">blahblah</span></li>
        <li class="index"><span class="txt">text1</span>
            <ul>
                <li class="index"><span class="txt">text2</span>
                    <ul>
                        <li class="noindex"><span class="txt">blahblah</span></li>
                        <li class="index"><span class="txt">text3</span></li>
                    </ul>
                </li>
            </ul>
        </li>
    </ul>
</div>
其中,
index
属性是一个整数,表示
.index>.txt:container
元素中的第一个子元素
的位置,
txtcontent
是应用于该元素的Jquery
text()
方法的结果。
注意:
txt
元素可能具有
contenteditable
属性,我甚至可以将新的
li.index
元素动态插入
ul
,因此每次单击
.makearray
,必须用新数组替换现有数组(即从头开始重建)

请提供帮助,谢谢

您可以使用以跨距为目标,使用jQuery构建阵列:

var arr = $('.index > .txt').map(function(i,el){
    return {
        index : i,
        txtcontent : el.textContent
    };
});
console.log(arr);

太好了。写一些代码。我没有包含代码,因为收集信息很容易,但我无法将其拆分为单独的对象。谢谢,修复了这个问题。但我希望他能独自解决这个问题。是的,
li>.txt
必须被类似于
.container.index>.txt:first child
的东西取代。顺便说一句,我的属性必须是类似JSON的:
“index”:i+”
(我听说不带引号的属性和带引号的属性之间有区别)。@lyricallywicked JSON是一个字符串,我的代码给你一个js数组。如果您想要JSON,只需
JSON.stringify(arr)
。我的意思是所有对象的所有属性都必须是quoted@lyricallywicked这在处理js时没有任何区别(至少在处理类似的属性名时没有)。但是如果你想的话,你可以加上引号。在任何情况下,如果您想要json,您需要使用我在前面的注释中显示的方法进行转换。
var arr = $('.index > .txt').map(function(i,el){
    return {
        index : i,
        txtcontent : el.textContent
    };
});
console.log(arr);