jQueryUI は「スナップされた」要素の内部「状態」を保持しますが、それを取得するには少し作業が必要です。
stop イベント (ドラッグ可能なオブジェクトのドラッグが停止したときに呼び出される) のイベント ハンドラーを定義する必要があります。
snapElements という配列がウィジェット データ内に保持され、次のようになります。
[
{
height: 102,
item: { /* DOM element */ },
left: 10,
snapping: false,
top: 10,
width: 102
}, ...
]
ここで本当に探しているのはsnapping
プロパティです。snapping
アイテムが現在 " " ドラッグ可能なオブジェクトであるかどうかは、スナップによってわかります。
snapElements
配列はイベントごとに更新されるため、ハンドラーdrag
では常に最新です。drag
そこdraggable
から、関連付けられた要素から data() を使用してウィジェット インスタンスを取得するだけです。
この配列を念頭に置いて、次のようなコードを記述して、ターゲットにスナップされたかどうかを判断できます。
$("#draggable2").draggable({
snap: ".ui-widget-header",
snapMode: "inner",
revert: true
stop: function(event, ui) {
var draggable = $(this).data("draggable");
$.each(draggable.snapElements, function(index, element) {
if (element.snapping) {
//i can't quit figure out how to stop the reverting from here, but here's you condition.
console.log("Snapped !!");
}
});
},
});
ああ、私はこれが役に立つことを願ってオンラインで見つけました.
関数のコールバックを元に戻します。