我有这种标记:
<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>
当我点击.makearray
元素时,我想收集有关.txt
列表项第一个孩子的所有.index
元素的信息(可能使用Jquery .index()
方法?)并创建此数组:
var info = [{
"index": "1",
"txtcontent": "text1"
}, {
"index": "2",
"txtcontent": "text2"
}, {
"index": "3",
"txtcontent": "text3"
}]
其中index
属性是一个整数,表示.index > .txt:first-child
元素在.container
元素中的位置,txtcontent
是应用于Jquery text()
方法的结果这个元素。
注意:txt
元素可能具有contenteditable
属性,我甚至可以动态地将新li.index
元素插入ul
,因此每次单击.makearray
时,现有数组必须用新的替换(即从头开始重建)。
请帮助,谢谢
答案 0 :(得分:1)
您可以使用child combinator >
来定位跨度,使用jQuery的.map
来构建数组:
var arr = $('.index > .txt').map(function(i,el){
return {
index : i,
txtcontent : el.textContent
};
});
console.log(arr);