2009-07-08 10 views
1

同じページでthickboxとjquery ui draggableの両方を実行していますが、それらは競合しています。Jquery - リンクがドラッグされていない場合にのみonclick関数を実行するにはどうすればよいですか?

のjQuery UIドラッグ可能な私は、このコードを別の場所から物事をドラッグアンドドロップすることができます:

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

ThickBoxのは、基本的にこのコードで、クリックイベントで開始:

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

しかし、太いボックスのリンクはドラッグ可能なdivの中にあるので、リンクをドラッグするとthickboxが開きます!したがって、問題です。私はリンクをドラッグすると、それが開いてThickBoxのない

  1. :よう

    は、どのように私はこのコードを変更することができます。

  2. リンクをクリックすると(ドラッグせずに)、thickboxが開きます。

ありがとう!

+0

onmouseupイベントが機能していないのは間違いです。残念ながら、私はそれを試すことができるように私のプロジェクトのいずれかでthickboxを使用していません。 –

答えて

2

thickboxを表示する前に要素がドラッグされているかどうかを確認します。 ドラッグすると、thickboxイベントハンドラを無効にするか、無効にします。

例:

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

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

また、クリック機能を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ミリ秒以上でクリックが少ないと仮定しています。あなたはあなたの場合に最も効果的なものを見ることができます。

関連する問題