5

私は Raphael JS 2.0 を使用しており、別の要素のドラッグの終了をシミュレートしてから、現在処理されている要素を削除したいと考えています。jquery を使用して実行できれば、それも素晴らしいことです。

このようなもの:

var child = currentShift.data('endChild');
var newX = child.attr('x');
if (this !== currentShift)
{
    newX = child.attr('x')-day;
}
currentShift.attr({y: child.attr('y'), x: newX, height: child.attr('height')});
$(currentShift.node).mouseup();
child.remove();

this子要素がドラッグの「移動」部分にあるため、エラーが発生します。しかし、それは と対話するために使用されていcurrentShiftます。

同様の効果を得る方法が他にもいくつかあることは知っていますが、任意の要素のドラッグエンドを模倣する方法があるかどうか知りたいです。

4

1 に答える 1

1

Raphael JS 要素への参照 (私の場合は ) を渡すだけで、ドラッグ終了関数 (私の場合はup)への参照を使用できるようです。私のコードは次のようになります。call()currentShift

var child = currentShift.data('endChild');
var newX = child.attr('x');
if (this!==currentShift)
{
    newX = child.attr('x')-day;
}
currentShift.attr({y: child.attr('y'), x: newX, height: child.attr('height')});
if (this !== currentShift)
    up.call(child);
else
    up.call(currentShift);
child.remove();

ユーザーがマウスを押したままにすると、要素が削除された後でもドラッグ移動関数を呼び出そうとするため、これはまだ私が望むことを正確に行っていません(つまり、実際にドラッグイベントを強制的に停止させるわけではありません)移動関数を呼び出そうとすると、要素がもう存在しないため、 up イベントを呼び出すだけで、多くの致命的ではないエラーが発生します。)

ユーザーがマウスを押し続けたとしても、ドラッグを強制的に終了させる方法について、次の数日以内に誰かが回答できる場合 (移動関数が呼び出されないようにするため)、その回答を受け入れます。そうでなければ、私はこれを受け入れます。

于 2012-10-20T00:24:43.063 に答える