2017-05-30 12 views
0

私は自分の練習のために単純なドラッグアンドドロップを行っています。私は要素をドラッグしてドロップゾーンにドロップしていると私は2つのdivドラッグしていると私は彼らが両方の作業が重複しているが、私はテストクローン1であるIDをインクリメントしています。私はちょうど私がドロップでIDをインクリメントすることができることを知りたいのですが、デフォルトのIDがのtest-clone-1のように重複して増えているので(test-clone-2test-clone-3)。私はドラッグしてドラッグすると、デフォルトのIDがのテストクローン1であり、今度は再びnドロップをドラッグすると、IDはのテストクローン2でなければなりませんが、ドラッグアンドドロップIDの増分互いにJquery UI:ドロップイベントでIDを更新する方法

$("#editorDesignView").droppable({ 
     accept: '.textTemplate', 
     drop: function(event, ui) { 
     var html = '<div id="test-clone-1" class="test" style="background: #eee; width: 80%; margin: 10px auto; padding: 10px;"><p contenteditable="true" style="padding: 5px;">Add your text here.</p><div style="padding:10px; width:50%;" class="draggable-area">drag me</div><div style="padding:10px;width:50%;" class="js-duplicate">duplicate me</div></div>'; 
    $(html).appendTo(this).hide().slideDown(); 

     } 
    }); 
    $('#editorDesignView').sortable({ 
    handle: '.draggable-area' 
    }); 

Fiddle link

答えて

0

それを行うための現実的な方法はeditorDesignViewtest-clone-id初めを持つdiv要素を数えることです。

var cloneCount = $("#editorDesignView").find("div[id^='test-clone-']").length+1; 

cloneCountは今落ち要素に与える番号を保持します。

これはドラッグされたクローン(並べ替え)と同じです。
これは正しい番号を保証します。

実際には、クローンの順序を変更した場合、最後の要素が参照であり、最大の番号を持たないことがあります。

あなたのupdated Fiddleはここにあります。

+0

私はこのようなものをいくつか見つけたいと思っています(テストクローン45f63(乱数)-1) – user7791702

+0

"begin with"と " * = 'for" contains "。今度は乱数を使用すると、乱数が繰り返される可能性があるため、一意の「id」が保証されなくなります。ランダム-1が既に存在する可能性があります。 1つの部分をランダム化したい場合は、 'id'を一意にするものであってはなりません。また、' id'を使って要素を数えたい場合は、固定部分がなければなりません。あなたはそれのためにクラスを使うことができます。 –

+0

乱数を使うのは良い考えではありません – user7791702

1

にreletedあなたはこのような何かを意味する必要がありますか?あなたがドラッグアンドドロップすると、cが増加し、重複したときには、同じままになりますか?

var c = 1; 
    $(".textTemplate").draggable({ 
    helper: "clone", 
    zIndex: 2500, 
    }); 
    $("#editorDesignView").droppable({ 
     accept: '.textTemplate', 
     drop: function(event, ui) { 
     var html = '<div id="test-clone-'+c+'" class="test" style="background: #eee; width: 80%; margin: 10px auto; padding: 10px;"><p contenteditable="true" style="padding: 5px;">Add your text here. ' + c + '</p><div style="padding:10px; width:50%;" class="draggable-area">drag me</div><div style="padding:10px;width:50%;" class="js-duplicate">duplicate me</div></div>'; 
    $(html).appendTo(this).hide().slideDown(); 
     c++; 
     } 
    }); 
    $('#editorDesignView').sortable({ 
    handle: '.draggable-area' 
    }); 
関連する問題