0

私のプロジェクトで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であるべきかどうか、またはコードに間違っているかどうかを知りたいです。どのように修正する必要がありますか?プロジェクトでドラッグ可能とソート可能の両方をどのように統合する必要がありますか?

答えて

0

これは、プラグインを要素にフックするための動作です。ドロップされるタイミングとドラッグされる場所を聴取する必要があります。

通常、これらの2つのプラグインは並んで動作します。だから私はそれを行う方法がないと思う、要素をドラッグ可能にすることなく、とにかくドラッグ可能なので、ドラッグ可能な必要があります。

+0

しかし、実際には、グローバルドラッグ、アイテムのドラッグ、並べ替えなど、複数の動作をまとめて統合できるiPhoneまたはAndroidアプリがたくさんあります。これらのアプリはどのようにこれを達成していますか?デスクトップブラウザでは実現できませんか? – chaonextdoor

+0

@chaonextdoorもちろん、それはちょうど私のポイント、ドラッグアンドドロップと、お互いの後に起こる2つの動作です、それはそれらを分離しようとして意味がありません? – Starx

+0

申し訳ありませんが、なぜあなたはいつも落ちると言いますか分かりません。私がここで統合したいのは、1つのul要素でドラッグとソートです。そして落としても常にドラッグする必要はありませんよね?そのため、jQueryUIには、draggableとdroppableの2つのセパレート・インタラクションがあります。一緒に使うことも、別々に使うこともできます。それはすべてあなた次第です。 – chaonextdoor

関連する問題