2011-07-05 25 views
3

我想加載一個對象的頁面,可以拖動到地圖/ div但希望有一個清除/撤消按鈕?這可能與jQuery的?取消jQuery的可拖動對象或重置

您可以在前面的問題看代碼

jQuery UI droppables - changing the image that's dropped

+2

假設下降元素都有某種類的你能不能只是$(」 .dropped')。remove()當清除按鈕被點擊時?您可能需要在此處提供更多信息。 – Marc

+0

idealy我想點擊一個按鈕,觸發類似的東西恢復到特定的座標 –

+0

我仍然不確定你在找什麼。你能舉一個完整的例子嗎? – Marc

回答

5

這可能是一個簡單的調用.animate()(這畢竟是所有jQueryUI的是做)和一些邏輯,以保持軌道你正在拖動的元素的原始位置(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中奇怪的東西。在可丟棄對象的某些部分放下作品。我想我應該把它稱爲一個半工作的例子':)' –