2013-06-18 15 views
6

JqueryUIでソート可能で、ユーザーがアイテムをドラッグすると、呼び出されたイベントを変更します。私は以下の例でこれを得た。Jquery UI変更イベントのソート可能なアイテムの位置

jsFiddle code hereユーザがアイテム(Item7)をドラッグし、アイテムをドラッグして位置を変えながら、位置を変更する私のコードで

stop: function(event, ui) { 
     console.log("New position: " + ui.item.index()); 
    }, 
    change: function(event, ui) { 
     // When the item postion is changed while dragging a item, I want it's position 
     console.log("New position: " + ui.item.index()); 
    } 

私はドラッグアイテムの位置を取得したい。

私はちょうどここに答えを見た:アイテムをドラッグしながら上記のリンク、位置値(ui.item.index())でjQuery UI Sortable Position

は、停止機能にアクセスされ、私が欲しいですポジション(on change機能)?何か案が ?

これは、item2の後にitem7を配置しようとすると、以前のItem2の値を取得するための検証を行うためです。(ドラッグするアイテムの現在位置を知っていれば、 )。検証が成功すれば、それは置くことができる、または私はいくつかのメッセージを表示する必要があります。

+0

[この質問と回答](http://stackoverflow.com/questions/8148145/drag-event-for-jquery-ui-sortable)は、あなたによく利用されているようです。 – Ohgodwhy

答えて

7

現在見つかっているもののインデックスを取得する場合は、placeholderを試してみてください。

change: function(event, ui) { 
     console.log("New position: " + ui.placeholder.index()); 
} 

FIDDLE

0

ジュード・デュランの答えは常に動作しません(私の髪を風袋引きした後にこれを見つけました)。最初と最後の項目のプレースホルダは、マウスの位置に応じて移動します。

function getPaceholderIndex(ui) { 
    var clone = $(myMenu).clone(); 
    $('.ui-sortable-helper', clone).remove(); 
    return $('.ghost', clone).index(); 
} 

は、実際のアイテムを最初に削除してプレースホルダを残すので、より効率的に動作します。私は、プレースホルダパラメータとして 'ゴースト'を設定していることに注意してください。

関連する問題