2011-12-06 3 views
2

私はストップイベントで、何かにドラッグされていない場合、私は特定の境界に移動したいdraggableを持っています。問題:drappableによって処理されるdropイベントが、draggableハンドラからのstopイベントの後に発生します。 draggablesの停止ハンドラはドラッグ可能な場所を示していますが、その場所にどの要素があるかを判断する方法はわかりません。何か案は?jQueryを使用して特定の場所で一番上の要素を取得するにはどうすればよいですか?

+0

はあなたがここにあなたのコードを追加することができます(関連するHTMLは、jQueryとCSSは、該当する場合)、および(HTTPを[デモを投稿します]: //jsfiddle.net/)?または、あなたがこれに答えていれば、その答えを答えとして投稿できますか? –

答えて

0

おそらく、ドロップ可能な要素をループし、そのオフセット位置を確認するだけかもしれません。各要素の幅/高さと組み合わせて、停止イベントが発生したときにドラッグ可能な要素を計算することができます。このような何か(これは私の頭の上から、テストされていない)

function stopCallback (x, y) { 
    var $droppables = $(".droppable"), 
     containedDraggableAtStop = function($item, left, top) { 
      var itemL = $item.offset().left, 
       itemT = $item.offset().top, 
       itemR = itemL + $item.width, 
       itemB = itemT + $item.height; 

      if (top > itemT && top < itemB && left > itemL && left < itemR) { 
       return true; 
      } 
      return false; 
     }, 
     numDroppables = $droppables.length, 
     i; 

    // x, y are the coords passed from the stop function 
    for (i = 0; i < numDroppables; i++) { 
     if (containedDraggableAtStop($droppables.eq(i), x, y)) { 
      return $droppables.eq(i); 
     } 
    } 
    return -1; 
} 
関連する問題