2011-01-13 15 views
5

目的の動作:ドラッグ中のドロップ可能オブジェクトの追加

ユーザはアイテムをツリー上にドラッグします。閉鎖されたノード上でホバリングすると、ノードは拡大して子供を明らかにする。この時点で、ユーザーは子ノードへのドラッグを継続して、それらのノードのいずれかにドロップできます。

これは正常に動作していました。私はdroppablesの "over"オプションを使用してノードを拡張し、子どもを捨てることができます。

しかし、私はいくつかの機能を追加する必要がありました。まず、ドラッグ可能なヘルパーを追加しました。まだ正常に動作しています。そして、私はdraggablesとdroppablesを2つの異なるコンテナ(divs)に入れました。この時点で、ヘルパーはコンテナから引き出されませんでした。解決策は、「appendTo: 'body'」をドラッグ可能に設定することでした。すべての良い...まあ、かなり。

現在、子ノードは、現在のドラッグ操作中にではなく、でなくなります。ユーザーは、現在のドラッグアンドドロップを目的の子ノードにリリースする必要があります。 appendToオプションを削除すると、問題はなくなりますが、ヘルパーは視覚的にdroppableコンテナに移動しません。

これらの新しいdroppablesを「起きて」すぐに削除できるようにする方法はありますか?

答えて

6

これは私がほぼ同じ問題を解決した方法です。私の場合、ドラッグ可能なドラッグ中にノードを開いた状態にすると、子アイテムはajax経由でロードされ、その後はドロップ可能として初期化されます。それから私はこれをしなければならない。

ui.draggable.draggable('option', 'refreshPositions', true); 
var tempFunc = function() { 
    if (ui.draggable) { 
     ui.draggable.off('drag', tempFunc); 
     setTimeout(function() { 
      ui.draggable.draggable('option', 'refreshPositions', false); 
     }, 100); 
    } 
}; 
ui.draggable.on('drag', tempFunc); 

これは、ドラッグ可能な現在のドラッグに参加する新しいdroppablesのための十分な長trueとしてrefreshPositionsオプションがあります。ドラッグ全体の中でオプションをtrueにすることもできますが、望ましくないパフォーマンスの低下をもたらします。

私は別の方法でそれを行う方法が見つかりませんでした。ポジションをリフレッシュするためだけにドラッグ中に呼び出すことができる方法があれば最適ですが、そうではありません。

関連する問題