Javascript (Jquery + JqueryUI) に問題があります。要素をドラッグ アンド ドロップしたいです。それが他の特定の要素の上にある場合、その要素は再作成されます..以下では、私が何を意味するかを見ることができるように、単純化された例を作成しようとしました..
ドラッグされた要素のコードを dom の新しい位置に適切に移動するにはどうすればよいですか? これは、「オーバー」イベントで発生するはずです。私がそれを落としたときではありません。ドロップゾーンの外に出たら、前に行ったアクションを元に戻す必要があります。ソースにコピーされた要素を意味し、他の新しく作成された要素を同じ ID に置き換えます。
ありがとう!パラ
-編集-: 視覚化を改善するために、コードにいくつかの変更を加えました。この行を削除すると:
ui.draggable.attr("id", ui.draggable.attr("id") + "_bkp");
「out:」コードは out-Part に入ります。問題は、その ID を変更する必要があることです。そうしないと、2 つの同一の ID が存在することになります。どうにかしてjqueryに伝えることができますか?それはまだ同じ要素ですか?
<!doctype html>
<html lang="en">
<head>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.9.1/themes/base/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.8.2.js"></script>
<script src="http://code.jquery.com/ui/1.9.1/jquery-ui.js"></script>
<style>
.bigbox{ width: 150px; height: 150px; padding: 0.5em; margin: 10px; border:thin solid black;}
.box{ width: 100px; height: 100px; padding: 0.5em; margin: 10px 10px 10px 0; border:thin solid black;}
</style>
<script>
$(function() {
$("#draggable_1, #draggable-nonvalid").draggable();
$("#droppable").droppable({
over: function(event, ui) {
ui.draggable.attr("id", ui.draggable.attr("id") + "_bkp");
ui.draggable.appendTo($("#muell"));
$('#momo').append('<div id="draggable_1" class="box"><p>I am a new Elemento</p></div>');
},
accept: "#draggable_1",
out: function(event, ui) {
$.each($("#muell > div"), function() {
var idOfBackedupElement = $(this).attr("id");
var origId = $(this).attr("id").replace("_bpk", "");
$("#" + origId).replaceWith($("#" + idOfBackedupElement));
});
}
});
});
</script>
</head>
<div id="momo" style="border:thin solid blue;float:left;">
<div id="draggable_1" class="box" >
<p>
Drag me to my target
</p>
</div>
<div id="droppable" class="bigbox">
<p>
accept: '#draggable'
</p>
</div>
</div>
<div id="muell" style="border:thin solid red;float:left;"></div>
</html>