4

私は次のようにドラッグ可能です:

$(".tab li").draggable({
    revert: true,
    delay: 1000,
    opacity: .75,
    helper: "clone",
    appendTo: "body"
})
.bind("dragstart", this.doSomething)
.bind("dragstop", this.undoSomething);

そのため、マウスを 1 秒間押した後、ドラッグが開始される場合があります。これは、1 秒後にマウスを動かしていれば問題なく機能します。マウスを動かすとすぐに、dragstart イベントが送出されます。私が望むのは、マウスをドラッグしなくても 1 秒後に「dragstart」がトリガーされることです。

私はこれを行うことができることを知っています:

.bind("mousedown", this.setSomeIntervalAndWait)

しかし、draggable() の一部として作成された ui.draggable 要素にアクセスする必要があるため、mousedown/mouseup ソリューションは機能しません。

マウスの動きの代わりに遅延時にイベントをトリガーするようにjQueryUIを変更せずにこれは可能ですか? タイムアウトを使用して問題なく何かをハックし、オブジェクトを複製し、配置して「ドラッグスタート」で削除することはできますが、複雑でないことを望んでいます。

4

2 に答える 2

6

最新の JQuery UI Draggable には、遅延オプションがあります。デモをチェック

于 2014-06-24T08:55:04.007 に答える
0

答えは単純に「いいえ」です。JQueryUIのドラッグ可能なインタラクションはそれをサポートしていないため、JQuery UIを変更するか、すでに示唆しているようなことを行う必要があります。これが頻繁に再利用されるものであることがわかっていない限り、後者の2つを使用します。そのようなものを実装する最良の方法は、bind(1.7より前)またはon(1.7より後)を使用してJQueryにカスタムイベントハンドラーを実装することだと思います。イベントを追加して実装する独自の小さなJQueryプラグインを実装することもできます。draggable

これ以上の詳細、またはそのようなプラグインの作成方法の例が必要な場合はお知らせください。

于 2012-07-09T18:02:14.807 に答える