0

並べ替え可能な要素から並べ替えられた配列を作成しようとしていますが、「toArray」メソッドが機能しません。これが私のソート可能なhtmlコードです:

<div class="control-group" style="cursor:pointer;">
    <label class="control-label" for="input-sort">Preferences</label>
            <div class="controls">
            <ul id= "sortable">
                    <li class="ui-state-default" id="Item1"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 1</li>
                    <li class="ui-state-default" id="Item2"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 2</li>
                    <li class="ui-state-default" id="Item3"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 3</li>
                    <li class="ui-state-default" id="Item4"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 4</li>
                    <li class="ui-state-default" id="Item5"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 5</li>
                    <li class="ui-state-default" id="Item6"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 6</li>
                    <li class="ui-state-default" id="Item7"><span class="ui-icon ui-icon-arrowthick-2-n-s"></span>Item 7</li>
            </ul>
            </div>
    </div>

対応するJavaScriptは次のとおりです。

<script>
    var result=$("#sortable").sortable("toArray");
    $("#sortable").sortable({
        stop: function(event, ui) {
            document.getElementById("info").innerHTML=result + " and " + result[0];
        }
    });
</script>

結果を表示すると、[objectObject]と[objectHTMLLIElement]が返され、結果を$( "sortable li")に割り当てようとしましたが、どの要素も返されませんでした。どんな助けでも大歓迎です。ありがとう。

4

1 に答える 1

3

あなたのコードは論理的に意味がありませんが、これがあなたが求めているものだと思います。

$("#sortable").sortable({
    stop: function(event, ui) {
        $("#info").html(JSON.stringify($("#sortable").sortable('toArray')));
    }
});

ただし、JSONライブラリを含めない限り、IE<8では機能しないことに注意してください。

コードでは、結果が更新されることはないため、常にjqueryオブジェクトが含まれます。これは常にオブジェクトであり、値の配列ではありません。

于 2012-06-04T17:45:45.707 に答える