私のプロジェクトでjQueryUIをドラッグ可能とソート可能に統合し、mousedownの開始時間と最初のmousemoveイベントの時間差を使って区別したいと思います。私のコードの一部は次の通りです:プロジェクトで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であるべきかどうか、またはコードに間違っているかどうかを知りたいです。どのように修正する必要がありますか?プロジェクトでドラッグ可能とソート可能の両方をどのように統合する必要がありますか?
しかし、実際には、グローバルドラッグ、アイテムのドラッグ、並べ替えなど、複数の動作をまとめて統合できるiPhoneまたはAndroidアプリがたくさんあります。これらのアプリはどのようにこれを達成していますか?デスクトップブラウザでは実現できませんか? – chaonextdoor
@chaonextdoorもちろん、それはちょうど私のポイント、ドラッグアンドドロップと、お互いの後に起こる2つの動作です、それはそれらを分離しようとして意味がありません? – Starx
申し訳ありませんが、なぜあなたはいつも落ちると言いますか分かりません。私がここで統合したいのは、1つのul要素でドラッグとソートです。そして落としても常にドラッグする必要はありませんよね?そのため、jQueryUIには、draggableとdroppableの2つのセパレート・インタラクションがあります。一緒に使うことも、別々に使うこともできます。それはすべてあなた次第です。 – chaonextdoor