2

私のページには並べ替え可能なリストがあります。ユーザーの意図を知りたいのですが、どのアイテムをどこにドラッグしたか、つまり、ドラッグされた要素の古い位置と新しい位置 (潜在的な位置) を知りたいです。

しかし、jQuery-sortable で実際に DOM を変更したくありません。自分でやりたいのです。次に例を示します。

$(".sortable-list").sortable({
  items: ".sortable-item",
  stop: function (event, ui) {
    // prevent DOM changes
    $(this).sortable('cancel');
    // get the indices
    var oldIndex = $(this).find('.sortable-item').index(ui.item);
    var newIndex = 'how?'; // this is the question
  }
});

ui.originalPositionandを使用して新しい位置を計算できることはわかっui.positionていますが、プレースホルダーを有効な場所に配置するため、jQuery-sortable は既にこの作業を行っていると思います。そのため、値を取得したいだけです。

それ、どうやったら出来るの?

4

1 に答える 1

3

さて、質問を書いているうちに、実際に解決策を見つけました。

を呼び出す前に、jQuery-sortable が DOM を変更することがわかりました$(this).sortable('cancel')。この呼び出しが実際に行うことは、プラグインが行った変更を元に戻すことです。

作業コードは次のとおりです。

$(".sortable-list").sortable({
  items: ".sortable-item",
  stop: function (event, ui) {
    var newIndex = $(this).find('.sortable-item').index(ui.item);
    $(this).sortable('cancel');  // revert changes
    var oldIndex = $(this).find('.sortable-item').index(ui.item);
  }
});
于 2012-11-23T14:00:18.663 に答える