0

プロジェクトにjQueryUIのドラッグ可能とソート可能の両方を統合し、マウスダウンイベントと最初のマウス移動イベントの開始時間の時間差を使用してそれらを区別したいと考えています。私のコードの一部は次のとおりです。

var deltaX = self.mouse.startX - event.pageX,
    deltaY = self.mouse.startY - event.pageY;
if (self.mouse.mousedownTime - self.mouse.mousemoveTime < 700){                   
                // Drag down
                if(Math.abs(deltaX) < Math.abs(deltaY) && deltaY < 0){
                    $(self.el).draggable({disabled: false});
                    $(self.el).sortable({disabled: true});
                    $(self.el).draggable({axis: 'y'});
                    $(self.el).draggable({revert: true});
 ....
}
// Sorting action
else {
            $(self.el).sortable({disabled: false});
            $(self.el).draggable({disabled: true}); // global dragging
            $(self.el).sortable({containment: $(self.el).closest('.content')});
        }

しかし、物事は私が期待したものではありません。要素のドラッグを開始するたびに、firebug に表示される html には適切なドラッグ可能/並べ替え可能なクラス設定がありますが、現在のドラッグ イベントには効果的ではありません。たとえば、初めてドラッグするとき、html には対応するクラス設定が既にあるにもかかわらず、要素はドラッグ可能でもソート可能でもありません。2 回目にドラッグすると、ドラッグ可能またはソート可能になります。また、現在のドラッグ イベントに対して要素をドラッグ可能/並べ替え可能に設定すると、次にドラッグしたときにのみ機能します。

つまり、現在のイベントに期待するドラッグ可能/並べ替え可能なイベントは、次のイベントでのみ有効になります。これがjQueryUIの本来あるべき姿なのか、それとも私のコードに問題があるのか​​ を知りたいです。どうすれば直せますか?プロジェクトにドラッグ可能とソート可能の両方をどのように統合すればよいですか?

4

1 に答える 1

0

これは予期される動作です。プラグインを要素にフックするには、いつドロップされ、どこにドラッグされるかをリッスンする必要があります。

通常、これら 2 つのプラグインは並行して動作します。したがって、ドロップ可能なものはドラッグする必要があるため、要素をドラッグのみ可能にすることなく、これを行う方法はないと思います。

于 2012-04-23T23:29:48.093 に答える