28

これは私を困惑させました。次のコードは、",,,,,," を返します。

<script type="text/javascript">
$(function() {
    $('#listB').sortable({
        connectWith: '#listA',
        update: function(event, ui) {
            var result = $(this).sortable('toArray');
            alert(result);
            }
    });
    $('#listA').sortable({
        connectWith: '#listB'
    });
});
</script>

<div id="boxA">
    <ul id="listA" class="myList">
        <li value="1">Item A</li>
        <li value="2">Item B</li>
        <li value="3">Item C</li>
        <li value="4">Item D</li>
        <li value="5">Item E</li>
        <li value="6">Item F</li>
        <li value="7">Item G</li>
    </ul>
</div>

<div id="boxB">
    <ul id="listB" class="myList">
        <li value="1">Item A</li>
        <li value="2">Item B</li>
        <li value="3">Item C</li>
        <li value="4">Item D</li>
        <li value="5">Item E</li>
        <li value="6">Item F</li>
        <li value="7">Item G</li>
    </ul>
</div>

どうして?!それは私を狂わせています!助言がありますか?

4

7 に答える 7

72

次のように、フェッチする属性を定義できます。

var result = $(this).sortable('toArray', {attribute: 'value'});
于 2013-03-13T10:33:39.090 に答える
45

.sortable('toArray')アイテムを配列にシリアルIds化し、アイテムに ID がないため、空の文字列があります。

于 2009-11-02T19:13:29.573 に答える
3

私もこの問題を抱えていましたが、要素に id がありました。jQuery の sortable('toArray') は、id を返すときに非常にヒットしましたが、これを使用して JavaScript でそれらを取得できます。

function getSortOrder() {
    var children = document.getElementById('sortedElement').childNodes;
    var sort = "";
    for (x in children) {
        sort = sort + children[x].id + ",";
    }
    return sort;
}

もちろん、これはコンマ区切りの文字列で ID を返しますが、配列を返すこともできます。この問題を解決するためのより良い方法があると確信しています。これは私が見つけた解決策です。

于 2012-04-26T17:22:37.867 に答える
0

$('.sortable').sortable('toArray'); クラスsortableの最初の要素のみを解析します。eachを使用して、すべての要素を解析できます。

$('.sortable').each(function(){
    result.push($(this).sortable('toArray'));
})
于 2016-09-20T10:38:31.057 に答える