3

次のような形式の並べ替え可能なリスト(jQuery UI)があります。

<ul class="baseList">
    <li id="3">Item 1
        <ul class="childList">
            <li id="68">Child 1 of Item 1</li>
            <li id="69">Child 2 of Item 1</li>
            <li id="70">Child 3 of Item 1</li>
        </ul>   
    </li>
    <li id="8">Item 2
        <ul class="childList">
            <li id="81">Child 1 of Item 2</li>
            <li id="83">Child 2 of Item 2</li>
        </ul> 
    </li>
</ul>

私が達成しようとしているのは、次のようなもので構成される配列変数を取得することです。

var entireList = []; entireList = [[3,[68, 69, 70], 8, [81, 83]]]

そのため、その変数をPHPに投稿して、データベースで処理することができます。

javascriptでこれをどのように解決できるか理解できないようです。私がこれまでに持っているのは次のとおりです。

var childList = $('.childList, .baseList').sortable({
        placeholder: "ui-state-highlight",
        opacity: 0.6,
        update: function(event, ui){
            var childArray = $('.childList').sortable('toArray');
            var parentsArray = $('.baseList').sortable('toArray');
            for(p in parentsArray)
            {
                postChildData[parentsArray[p]] = childArray;
            }
            console.log(postChildData);
        }
    });

これで半分になりました。私の結果は次のとおり です。最初の要素[3: Array[3], 8: Array[3]] の子のみを取得するという点に到達します。<li>

ここにいる誰かが、私が上で書いたような配列(entireList)を取得するのを手伝ってくれますか?

4

3 に答える 3

0

それは適切なcssではないかもしれませんが、2番目のリストに別のクラス名を付けます。この例ではchildList2を付けました。ulを変更したくない場合は、親liまでのレベルを上げることもできます。

    var childArray = [];
    var childArray2 = [];

    $.each(childList, function(children) {
       childArray.push(children);
    });
    $.each(childList2, function(children2) {
       childArray2.push(children2);
     });

それがうまくいかない場合は、自分でテストする方法なしに推測をやめる必要があります。君

于 2013-03-07T13:44:00.390 に答える
0

forループで使用する代わりに、次を使用childArrayします。

$('#' + parentsArray[p] + ' > ul').sortable('toArray');
于 2013-03-07T13:55:52.463 に答える
0

さて、私はついに解決策を見つけました。新しい配列を作成する必要があり、その中に親IDと子を持つ配列を格納する必要がありました。

これを行う方法は、forループを次のように置き換えることです。

for(p in parentsArray)
{
   postListData[p] = Array(parentsArray[p], $('#' + parentsArray[p] + ' > ul').sortable('toArray'));
}
于 2013-03-07T14:55:02.230 に答える