1

私は同じページでthickboxとjquery ui draggableの両方を実行していますが、それらは競合しています。

Jquery UI Draggable を使用すると、次のコードを使用して、ある場所から別の場所に物をドラッグ アンド ドロップできます。

$(".droppable").droppable({  
      drop: function(ev, ui) {  
             do stuff  
}  
});

Thickbox は、基本的に次のコードで、クリック イベントで開始します。

$(".thickbox").click(function(){  
thickbox functions...  
});

しかし、シックボックスのリンクはドラッグ可能な div 内にあるため、リンクをドラッグするとシックボックスが開きます!! したがって、問題。

このコードを次のように変更するにはどうすればよいですか。

  1. リンクをドラッグしても、thickbox が開きません。
  2. リンクをクリックすると(ドラッグせずに)、シックボックスが開きます。

ありがとう!

4

1 に答える 1

2

太いボックスを表示する前に、要素がドラッグされているかどうかを確認します。または、ドラッグ時にシックボックス イベント ハンドラーを無効にします。

例えば:

$(".thickbox").mouseup(function(){  
    if (is_being_dragged()) return;
    // thickbox functions...  
});

is_being_draged() は、ドラッグ関数によって設定されたフラグをチェックする必要があります。ドラッグ関数は、完了後にドラッグ フラグを設定解除する必要があります。

クリック機能を onmousedown にしてから onmouseup にすることで、使用しているドラッグ機能とは別にこれを解決することもできます。

$(".thickbox").mousedown(function(){  
   this.__down = new Date().getTime(); 
});

$(".thickbox").mouseup(function(){  
   var interval = new Date().getTime() - this.__down; 
   // assume dragged if it was pressed 50 millisecs or more ago
   if (interval > 50) { return }
});

ドラッグには 50 ミリ秒以上かかり、クリックはそれ以下であると想定しています。あなたのケースで何が最もうまくいくかを見ることができます。

于 2009-07-08T08:07:32.977 に答える