2011-01-27 9 views
4

jQuery UIを使用して、私はdiv2を持っていますfooはdraggableとdroppableの両方とdivは唯一のドロップ可能です。 helper: 'clone'オプションをオンにしてドラッグすると、元のfooは実際には動いていません。クローンされたfooを元のfooの上にドロップすると、drop: functionは呼び出されません。複製されたjQuery draggableはそれ自体にドロップすることはできません

これは、クローンされたfoobarにドロップしたときに機能するため、これは変わったようです。それはfooに他のdraggablesを落とすために働く。唯一の問題は、自分自身にfooを落とすことができないということです。

私はfooとbarとさえ私は混乱しているが、この例では、物事をクリアする必要がありますドラッグとドロップ可能ので、何回も言った:あなたが上に最初のボックスをドラッグしよう

http://jsfiddle.net/5KATZ/

を第二または第三、それは動作します。しかし、それを2番目のボックスにドロップするのではなく、ドラッグしてからドロップしても何も起こりません。これが仕事の仕方であれば、何が間違っているのですか?これがjQuery UIのバグであれば、良い回避策はありますか?

答えて

1

EDIT

この1つは、より良い作品:http://jsfiddle.net/kW369/、私はあまりにも古いものを残してきました。

ニース質問!これはjQueryのデフォルト動作です。このように動作するのは間違いないと思います...アイテムをドロップする必要があるのは奇妙なことです。とにかく問題の部分的な解決策であるthis jsFiddleを試してください。

ドラッグされたdivの位置を検出し、最初のdiv位置で折りたたんだ場合に表示されます。私はこれが最も明確な解決策ではないことを知っていますが、それが私が思いついた唯一の解決策です。また、これはバグがあります。なぜなら、divの左上隅を使用して位置が計算されるからです。つまり、最初のdivを2番目のdivの中に置いて2番目のdivにドロップする場合は、ドラッグしているdivの左上隅あなたが両方のdivにドロップしたように動作する最初のものの上にあります。 ui.position ['top']とui.position ['top']の代わりにマウスの位置を使用して、より正確に位置を検出する必要があります。

+1

非常に良い!それは非常に巧妙なアプローチです。プロセスでjQueryの 'position()'関数について学ぶことができました。ドラッグ可能なものを落とす必要があるのはめったにないかもしれませんが、私のJavaScriptのMasterMindの実装では、それを移動して同じ場所に戻すことにした場合、消えて、それは変です。参照してください:http://martinsmucker.com/mastermind –

+0

ありがとう!これでサークルでラウンドしています!! – hallodom

+0

この不自然さは人間工学にはなく、実際にはjQueryにあります。私はすべての距離がゼロ距離にオブジェクトをドラッグすると結果がないはずだと思う。この問題は、「どこでも」を落とすと元の位置が意味を持つことになります。例えば。ツールバーからツールをドラッグして削除します。元の場所は別のドロップ可能なターゲットである必要があります。その場合、そのドロップハンドラは元に戻りますが、周囲のすべての場所の停止ハンドラは実際の効果を持ちます。 –

関連する問題