jqueryui のソート可能なプラグインを使用する場合、ドラッグを開始した後にマウスをドロップ位置に移動すると、マウスを離したときに何も上になくても、それを記憶してそこにドロップするという問題があります。
マウスを放したときにドロップ位置を超えていない場合、ドラッグされたポートレットが元の位置に戻るように、これを防ぐ方法はありますか?
jqueryui のソート可能なプラグインを使用する場合、ドラッグを開始した後にマウスをドロップ位置に移動すると、マウスを離したときに何も上になくても、それを記憶してそこにドロップするという問題があります。
マウスを放したときにドロップ位置を超えていない場合、ドラッグされたポートレットが元の位置に戻るように、これを防ぐ方法はありますか?
不適切な割り当てを防ぐための回避策があります。コードはより複雑なので、必要に応じてこれを削除しました。
OVERイベントを使用して、ターゲットにホバークラスを追加します
over: function(event,ui){
$(this).addClass('hover');
}
OUTイベントを使用して、ターゲットからホバークラスを削除します
out: function(event,ui){
$(this).addClass('hover');
}
RECEIVEで、ターゲットにhave hoverクラスがない場合は、ソートをキャンセルします。キャンセルは、ソートが開始される前の状態にリストを戻します
receive: function(event,ui){
if( !$(this).hasClass('hover')){
$(this).sortable('cancel');
}
}
これはまだもう1つの問題を残します。他のターゲットが最初にOVERイベントをトリガーするまで、ターゲットはOVERイベントに再度応答しません。
リストAアイテム1アイテム2
リストB
アイテム3
このシーケンスは、想定されるターゲットをクリアする方法を示しています
ターゲットを再びアクティブにするには、ユーザーがドラッグで余分な動きをする必要があるため、この最後の問題を回避する方法をまだ探しています(アイテム1をリストAからリストBにドラッグしたいが、オーバーシュートしてリストBが勝ったと仮定します) 2回目にMOVEをトリガーしないでください。つまり、ホバークラスを配置して、アクティブなドロップスポットであることを示すことができません。
結論として、sortableはOUTをトリガーしますが、RECEIVEをトリガーするドロップの場合でもターゲットを記憶し、また防止します