2011-08-02 9 views
2

私はjquery DraggablesをSortableで使用しています。私は、左にある要素のリストを持っています。右の別のdivにドラッグアンドドロップする必要があります。左から同じアイテムを複数のボックスに入れることができるので、私はヘルパーを使いました: "クローン"すべては、受信イベントでクローンされた新しい要素への参照を取得する必要があるまでうまく動作し、クリックハンドラを追加できます。ドラッグ&ドロップクローン

新しい要素への参照が必要です。

<div> 
     <div style="float: left; width: 300px;"> 
      <div id="FieldList"> 
       <h2>Loading</h2>    
      </div> 
      <input type="button" name="cmdTest" id="cmdTest" value="Test" /> 
    </div> 
    <div style="float: right; width: 300px;"> 
     <div> 
      <div>Select Columns</div> 
      <div class="Toolbar"></div> 
      <div id="SelectFields" class="DroppableField"> 

      </div> 
     </div> 
     <div> 
      <div>Conditions</div> 
      <div class="Toolbar"></div> 
      <div class="DroppableField" style="background-color: Gray; height: 200px;"> 

      </div> 
     </div> 
     <div> 
      <div>Order</div> 
      <div class="Toolbar"></div> 
      <div class="DroppableField" style="background-color: Gray; height: 200px;"> 

      </div> 
     </div> 
    </div> 
    <div style="clear: both;"> 
    </div> 
</div> 

Javascriptを:

$(document).ready(function() { 

     $(".DroppableField").sortable({ 
      revert: true, 
      receive: function (ui, event) { 
       // ui.helper always seems to be null. Many of the other properties seem to reference the original item. I need the NEW ONE!!!     
       $(ui.helper).dblclick(function() { 

       }); 
      } 
     }); 

     $.ajax({ 
      url: "/condition/getconditions", 
      data: {}, 
      dateType: "json", 
      type: "POST", 
      success: function (data, successcode, jqXHR) { 
       var html = ""; 
       for (var i = 0; i < data.length; i++) { 
        $("#FieldList").append("<div>" + data[i].Description + "</div>").find("div:last").data("fielddata", data[i]); 
        //html += ; 
       } 

       $("#FieldList div").draggable({ 
        connectToSortable: ".DroppableField", 
        helper: "clone", 
        revert: "invalid" 
       }); 
      } 
     }); 

    }); 
+1

箱入りの方法がないようです新しく複製されたアイテムへの参照を取得しますが、http://stackoverflow.com/questions/4973339/jquery-ui-draggable-sortable-get-reference-to-new-itemはこれに対処するための素晴らしい方法です。 –

+0

また、 'ui'と' event'を入れ替えてください。 'receive:function(event、ui)' –

答えて

1

あなたは、コールバック関数が受け取る2つのパラメータを反転しているように見えます。

receive: function (ui, event) { 

} 

jQuery UI Docsによると

receive: function (event, ui) { 

} 

であるべき:すべてのコールバックは二つの引数を受け取る

:元のブラウザのイベントと 準備UIオブジェクト[...]

関連する問題