-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要素に関する情報を収集し (おそらく Jqueryメソッドを使用しますか?)、次の配列を作成します。 .index.index()

var info = [{
    "index": "1",
    "txtcontent": "text1"
}, {
    "index": "2",
    "txtcontent": "text2"
}, {
    "index": "3",
    "txtcontent": "text3"
}]

プロパティは、要素内の要素indexの位置を示す整数で、この要素に適用されたJquery メソッドの結果です。 注:要素には属性がある場合があり、動的に新しい要素を挿入する場合もあるため、 をクリックするたびに、既存の配列を新しい配列に置き換える (つまり、最初から再構築する) 必要があります。 .index > .txt:first-child.containertxtcontenttext()
txtcontenteditableli.indexul.makearray

助けてください、ありがとう

4

1 に答える 1

1

子コンビネータ>を使用してスパンをターゲットにし、jQuery.mapを使用して配列を構築できます。

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

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

于 2013-03-01T03:21:34.880 に答える