2016-06-01 4 views
0

私はhtmlとjavascriptでスケジュール表を作成しています。 unstyledフィドルはここにある:https://jsfiddle.net/tobyla/6xa225gx/html5ドラッグアンドドロップ - 不要なJavaScriptのループ

ユーザーが同じの日」列内の異なる役割に労働者をドラッグすることができます。要件の一部は、不在者を不在者列にドラッグして表示できることです。 (任意の日に複数のことができます)。

問題は、各追加の労働者がカラムに添加するためには、Javascriptを複数回、新しい名前を追加し、より多くの時間をループしていることです。

問題は、このコードの周りに根ざしているように見える:

else if (draggedItem != this && targetThisDay == thisDay && targetShiftPattern == "absentees") { //MH - swap if we're not dragging the item onto itself 
    copy = "<tr>" + $(this).clone(true,true) + "</tr>"; 
    $(this).after($(draggedItem).clone(true,true)); 
    $(draggedItem).replaceWith('<td class="dnd" draggable="true" data-dayoftheweek="monday" data-skillSet="skill2"> </td>'); 
    $(draggedItem).on("drop", handleDrop); 
    alert('absenteeism');     
    runIndex(); 
} 

任意の助けもappreciated-おかげでみんなだろう!

答えて

1

あなたの問題はrunIndex()同じ要素を再選択し、同じイベントハンドラを再結合することです。

これらのイベントを一度バインドするだけで済みます。

Updated fiddle

+0

迅速な対応に感謝しますが、あなたのフィドルは私が持っていた同様の問題に実行されます - 私は再作成する欠勤への移動によって空のままのセルを許可するようにrunIndexもう一度実行してください。有効な置換えをこれらのギャップにドラッグしようとしても機能しません。 – toby

+0

その場合は、イベントの委任ソリューションと現在の直接バインディングを真剣に検討する必要があります。 –

+0

Andreに感謝します - 私はイベントの委任を見ていきます。 – toby

関連する問題