2013-03-01 85 views
-1

我有這樣的標記:有關所選元素對象的數組收集信息

<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屬性是一個整數i在.container元素中指示.index > .txt:first-child元素的位置,txtcontent是應用於此元素的Jquery text()方法的結果。
注:txt元件可以具有contenteditable屬性,我甚至可能插入新li.index元素注入ul動態,所以每次我點擊.makearray,現有的陣列必須由新的替換(即,從頭開始重建)。

請幫忙,謝謝

+1

這是偉大的。寫一些代碼。 – 2013-03-01 03:20:04

+0

我沒有包含代碼,因爲它很容易收集信息,但我無法將其拆分爲單獨的對象 – 2013-03-01 03:53:29

回答

1

可以使用child combinator >爲目標的跨度,以及jQuery的.map構建陣列:

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

http://jsfiddle.net/39VyA/1/

+0

謝謝,修正了這個問題。但我希望他能夠單獨弄清楚。 – bfavaretto 2013-03-01 03:29:02

+0

是的,'li> .txt'必須替換爲'.container .index> .txt:first-child'。順便說一下,我的屬性**必須是類似JSON的:'「index」:i +「」'(我聽說沒有引號和引用屬性之間有區別)。 – 2013-03-01 03:34:22

+0

@lyricallywicked JSON是一個字符串,我的代碼給你一個js數組。如果你想要JSON,只需'JSON.stringify(arr)'。 – bfavaretto 2013-03-01 03:36:25

相關問題