ドラッグアンドドロップを実行していて、ドラッグ可能なオブジェクトが画面に設定した特定の制限を超えたら、元の位置に戻したいと思います。
私の問題は、onmousedownイベントがアクティブな場合、onmouseupイベントが呼び出されるまでオブジェクトが元の位置に戻らないことです。
実行中にマウスダウンをキャンセルまたは停止することはできますか?
ドラッグアンドドロップを実行していて、ドラッグ可能なオブジェクトが画面に設定した特定の制限を超えたら、元の位置に戻したいと思います。
私の問題は、onmousedownイベントがアクティブな場合、onmouseupイベントが呼び出されるまでオブジェクトが元の位置に戻らないことです。
実行中にマウスダウンをキャンセルまたは停止することはできますか?
特定の条件が満たされたときに、mousemoveイベントをクリアできます。
function trackMouse(e) {
if (e.pageX > 200 || e.pageY > 200) {
// stop execution (event continues to run)
// alternatively, to detach this event:
$(window).off('mousemove', trackMouse);
} else {
$('#output').html(e.pageX +', '+ e.pageY);
}
}
$(window).on('mousemove', trackMouse);
@Voitek Zylinski:あなたの解決策は機能しますが、私はついに私の場合により良いこの解決策を見つけました:
$(document).trigger("mouseup");
ありがとうございました。
onmousemove-eventを使用して制限に達したかどうかを確認する必要があるようですが、onmousedownを使用しています。これは、マウスボタンを離す前に起動しないと言っています。これは、マウスボタンを押すと1回だけ発生します
おそらく、このjquery.event.dragプラグインが役立つかもしれません。進行中にドラッグをキャンセルすることができます。そのドキュメントから:
引っ張る
このイベントは、マウスが移動するたびに「draginit」と「dragstart」の後に発生します。ハンドラーはfalseを返し、ドラッグインタラクションを停止し、直接「ドラッグ」に進み、「ドロップ」イベントを防ぐことができます。(「draginit」から)複数の要素をドラッグすると、このイベントは各要素で一意に発生します。