4

jQuery UI を使用して、fooドラッグとドロップの両方が可能な div と、ドロップbarのみが可能な div があります。helper: 'clone'このオプションをオンにするとドラッグが発生するため、オリジナルfooは実際には移動していません。clonedfooを元の の上にドロップするfooと、drop: functionは呼び出されません。

fooクローンをにドロップすると機能するため、これは奇妙に思えますbar。また、他のドラッグ可能なものを にドロップすることもできfooます。唯一の問題は、自分自身にドロップできないことfooです。

foo と bar とドラッグ可能とドロップ可能と何度も言ったので、私でさえ混乱していますが、この例は物事を明確にするはずです:

http://jsfiddle.net/5KATZ/

最初のボックスを 2 番目または 3 番目のボックスにドラッグしようとすると、うまくいきます。しかし、2 番目のボックスにドロップするのではなく、ドラッグを開始してから、それ自体にドロップしようとしても、何も起こりません。これが物事がうまくいくはずの方法である場合、私は何を間違っていますか? これが jQuery UI のバグである場合、何か良い回避策を思いつきますか?

4

1 に答える 1

1

編集

これはうまく機能します: http://jsfiddle.net/kW369/、古いものも残しました。

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

ドラッグされた div の位置を検出することで機能し、最初の div 位置で折りたたまれているかどうかを確認します。これが最も明確な解決策ではないことはわかっていますが、私が思いついたのはこれだけです。また、div の左上隅を使用して位置が計算されるため、これにはバグがあります。そのため、マウスを 2 番目の div 内に配置して最初の div を 2 番目の div にドロップすると、ドラッグしている div の左上隅になります。最初のものの上にあり、両方の div にドロップしたように動作します。位置をより正確に検出するには、ui.position['top'] および ui.position['top'] と left の代わりにマウス位置を使用する必要があります。

于 2011-01-27T21:53:06.467 に答える