-1

クラスソート(およびsortable();動作)でX divを取得しました

<div class="sort" id="a"></div>
<div class="sort" id="b"></div>
<div class="sort" id="c"></div>
<div class="sort" id="d"></div>
<div class="sort" id="e"></div>

ボタンをクリックして位置を切り替えたい

Ex を取得するには:

<div class="sort" id="b"></div>
<div class="sort" id="c"></div>
<div class="sort" id="e"></div>
<div class="sort" id="d"></div>
<div class="sort" id="a"></div>

それをする必要があります:

$("#sort").sortable().disableSelection();
$("#sort li:eq(3)").insertAfter($("#sort li:eq(4)"));
$("#sort li:eq(0)").insertAfter($("#sort li:eq(4)"));

しかし、私はこれを X 要素で機能させるための関数を構築したいと思います。関数はそのような引数として配列を取ります:

{'a' : 4 , 'b' : 0, 'c' : 1, 'e' : 2, 'd' : 3}

何か案が?

4

1 に答える 1

1
function sortElements(ELEMENTS) {
    $("#sort").sortable().disableSelection();
    $.each(ELEMENTS, function (eleID, elePOS) {
        if ($('#' + eleID).index() != elePOS) {
            $("#" + eleID).insertAfter("#sort li:eq(" + elePOS + ")");
        }
    });
    //I assume you need to re-initialize the `sortable` widget here
}

$('#my-button').on('click', function () {
    sortElements({'a' : 4 , 'b' : 0, 'c' : 1, 'e' : 2, 'd' : 3});
    return false;
});

これにより、要素IDと新しい位置のオブジェクトが渡され、各要素が配置されます。

アップデート

要素を挿入する位置が現在の位置と同じであることを確認するifステートメントをループ内に追加しました。これを使用して要素を挿入しようとすると、要素はDOMから削除されます。$.each()insertAfter()

これがデモです:http://jsfiddle.net/FMxZa/3/

于 2012-04-07T22:10:51.823 に答える