2011-07-05 3 views
3

マップ/ divにドラッグできるオブジェクトのページをロードしたいのですが、クリア/アンドゥボタンが必要ですか?これはjqueryで可能ですか?jqueryのドラッグ可能なオブジェクトのキャンセルまたはリセット

あなたは

jQuery UI droppables - changing the image that's dropped

+2

ができないあなただけの$(」 .dropped ')。クリアボタンをクリックするとremove()?ここでもう少し詳しい情報を提供する必要があります。 – Marc

+0

理想的なもの私は特定の座標に戻すような何かを誘発するボタンをクリックしたいと思います –

+0

私はまだあなたが探しているものは不明です。あなたは完全な例を挙げることができますか? – Marc

答えて

5

これは(、結局、すべてのjQueryUIがやっている場合).animate()への単純な呼び出しで可能であり、いくつかのロジックはを追跡するために、前の質問でコードを見ることができますドラッグしている要素の元の位置です(jQueryUIはすでに部分的に処理しています)。

  1. .data()を使用して、ドラッグ可能な要素の元の位置とあなたdroppableオブジェクトの.drop()イベントを追跡します:

    $("#drop").droppable({ 
        drop: function(event, ui) { 
         if (!ui.draggable.data("originalPosition")) { 
          ui.draggable.data("originalPosition", 
           ui.draggable.data("draggable").originalPosition); 
         } 
        } 
    }); 
    

    基本的にこれはただドラッグされた要素の「originalPosition」と呼ばれるデータを設定します。これは、有効なドロップゾーン内で要素をドラッグし続けることができることを前提としているため、ドラッグしたまま元の位置に上書きすることはありません。

  2. あなたはそれを呼び出す関数を作成しますが元の位置にドラッグされたオブジェクトをアニメーション化:

    function revertDraggable($selector) { 
        $selector.each(function() { 
         var $this = $(this), 
          position = $this.data("originalPosition"); 
    
         if (position) { 
          $this.animate({ 
           left: position.left, 
           top: position.top 
          }, 500, function() { 
           $this.data("originalPosition", null); 
          }); 
         } 
        }); 
    } 
    

    は、あなたの好みに合わせてアニメーションの速度を調整します。イベントハンドラから機能

  3. コール:

    $("#undo").click(function() { 
        revertDraggable($(".drag")); 
    }); 
    

はここで働い例です:ドロップされた要素のすべてが、クラスのいくつかの並べ替えを持っていると仮定するとhttp://jsfiddle.net/v7N6w/

+0

何らかの理由で、作業中の項目がドロップ可能であるにもかかわらず、これはまさに私が必要とするものです。私のコードで動作します。私の一日を保存しました。 –

+1

@Chris Mccabe:うまくいきました!私はあまりにも奇妙なことに気づいた。私はそれを灰色のものにiframeで続行した。ドロップは、ドロップ可能オブジェクトの一部で機能します。私はそれを半動作の例と呼ぶべきだと思います。 ':)' –

関連する問題