5

jQuery UI のドラッグ可能なものと、個別に定義されたいくつかのdroppablesがあります。ドロップ可能オブジェクトの 1 つが構成tolerance: 'intersect'されているため、ドラッグ可能オブジェクトが複数の種類のドロップ可能オブジェクトに同時にドロップされる可能性があります。

意図しないドロップ可能アイテムが発射されるのを防ぐ最善の方法は何ですか? tolerance: 'intersect'基本的に、別のドロップ可能がトリガーされた場合にドロップ可能がトリガーされないように、ドロップ可能を優先したいと思います。

更新- 物事を明確にするための詳細情報:

  • tolerance: 'pointer'ドロップ可能の 1 つのクラスを除いて、すべてのドロップ可能が構成されますtolerance: 'intersect'

  • ドロップ可能の 1 つのクラスが存在する理由tolerance: 'intersect'は、ドロップ可能が非常に狭く、ユーザーが でそれらを見つけるのに問題があるためtolerance: 'pointer'です。

  • ドロップ可能なものをさらに離すことはオプションではありません。

  • ドロップ可能なものはどれもオーバーラップしませんが、ドラッグ可能なものはtolerance: 'intersect'、マウス ポインターが のある別のドロップ可能なものの上にある間に、ドロップ可能なものとオーバーラップするのに十分な大きさtolerance: 'pointer'です。この方法では、最大 2 つのドロップ可能オブジェクトを一度にトリガーできます。

  • tolerance: 'intersect'UI は、別のドロップ可能オブジェクトがトリガーされた場合にドロップ可能オブジェクトを無視することで、ユーザーの意図を判断できるようにレイアウトされています。つまり、ユーザーがマウス ポインターを でドロップ可能な上に移動した場合、tolerance: 'pointer'そこにドロップするつもりであると想定しても安全です。問題は、不要なドロップ可能ファイルを無視する方法がわかりません。

4

3 に答える 3

7

over:、目的のドロップ可能オブジェクトにクラスを割り当て、他のすべてのドロップ可能オブジェクトからそのクラスを削除します。

$(".dragArea").not($(this)).removeClass("dragHover");
$(this).addClass("dragHover");

次にdrop:、クラスが設定されているかどうかを確認します。

if(!$(this).is('.dragHover')){
    return false;
}

このようにして、1 つのドロップ可能オブジェクトのみがトリガーされます。

于 2012-08-09T10:44:22.230 に答える
1

おそらく、「優先度の低い」ドロップ可能なイベントでは、ドラッグ可能なものが「優先される」ドロップ可能な上にあるかどうかを確認し、「優先度の低い」ドロップ可能が無効になっている場合に確認できます。

ブレーンストーミングを試みているだけで、用語については申し訳ありません。

于 2009-08-18T07:57:12.387 に答える
0

同時に落とさないように、互いに物理的に離してください。そうでなければ、ユーザーが何を意図したかをどのように判断するのでしょうか? 交差する各ドロップ可能でのドラッグ可能のパーセンテージを計算しますか?

于 2009-08-18T06:52:58.117 に答える