2011-12-16 10 views
3

私は2つの列を持つテーブルを持っています。各列には、一意のID「pick」と「drop」があります。また、私は最初の列にいくつかの項目があります。 draggable/drappable jQuery UIの使い方最初の列(ピック)から2番目の列(ドロップ)に項目をドラッグします。jQueryを使用してアイテムのドラッグアンドドロップでDOMを更新

アイテムを移動するときにDOMを更新する必要があります。「選択」からアイテムを削除して「ドロップ」に追加します。私はそれをすべて関数に入れるのに助けが必要です。この関数は、ドロップを検出できるコードの一部に含まれます。

答えて

6

ここで私はこれを行いました。ドロップされた要素の親を、ドロップされた要素に変更します。

$(".droppable").droppable({ 
    drop: function(event, ui) { 
     $(ui.draggable).appendTo($(this)); 
}}); 

、ここで、それは私はあなたがこれを試してみてくださいだと思うあなたの新しい問題に考えた後

$(".droppable").droppable({ 
    drop: function(event, ui) { 
     if($(ui.draggable).parent() !==$(this)){ 
      $(ui.draggable).appendTo($(this)); 
     } 
}}); 

する必要がない場合、それは実行does notのように、私はそれを編集する方法をです。これが機能するために、drop列はtopposition:absoluteleftを持っている必要がありますし、両方の列を含むメインラッパーはposition:relative

$(".droppable").droppable({ 
    drop: function(event, ui) { 
     var $kid = $(ui.draggable); 
     var $dad = $(this); 
     if($kid.parent() !== $dad)){ 
      $kid.appendTo($dad); 
      $kid.css('left', $kid.left() - $dad.left()); 
      $kid.css('top', $kid.top() - $dad.top()); 

     } 
}}); 
+0

これは素晴らしいですする必要があります - 私は考えていたよりもずっと簡単。だから私は本当に行う必要はありません.remove()? – santa

+0

私は、コードを修正して、特定のIDを.parent()の代わりに使う必要があると思います。私のケースでは、その "ドロップ"領域を持っている他の子供がいると私はそれらのいずれか内の項目を移動している間OKですが、その子を残すと、まだドロップ内にアイテムが消える... – santa

+0

また私は$(ui.draggable).appendTo($(this))を使用すると気づきました。 アイテムを落とすとアイテムが飛び出し、ドロップされた場所には残りません... – santa

関連する問題