1

ドラッグアンドドロップを実行していて、ドラッグ可能なオブジェクトが画面に設定した特定の制限を超えたら、元の位置に戻したいと思います。

私の問題は、onmousedownイベントがアクティブな場合、onmouseupイベントが呼び出されるまでオブジェクトが元の位置に戻らないことです。

実行中にマウスダウンをキャンセルまたは停止することはできますか?

4

4 に答える 4

1

特定の条件が満たされたときに、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);​

デモ(JSLint)

于 2013-01-02T15:21:23.203 に答える
0

@Voitek Zylinski:あなたの解決策は機能しますが、私はついに私の場合により良いこの解決策を見つけました:

$(document).trigger("mouseup");

ありがとうございました。

于 2013-01-02T16:11:46.047 に答える
0

onmousemove-eventを使用して制限に達したかどうかを確認する必要があるようですが、onmousedownを使用しています。これは、マウスボタンを離す前に起動しないと言っています。これは、マウスボタンを押すと1回だけ発生します

于 2013-01-02T15:11:01.270 に答える
0

おそらく、このjquery.event.dragプラグインが役立つかもしれません。進行中にドラッグをキャンセルすることができます。そのドキュメントから:

引っ張る

このイベントは、マウスが移動するたびに「draginit」と「dragstart」の後に発生します。ハンドラーはfalseを返し、ドラッグインタラクションを停止し、直接「ドラッグ」に進み、「ドロップ」イベントを防ぐことができます。(「draginit」から)複数の要素をドラッグすると、このイベントは各要素で一意に発生します。

于 2013-01-02T15:28:21.810 に答える